2013-09-29 3 views
0

그래서 업데이트 된 SQL 쿼리에서 문제가 무엇인지 알아 내려고 여기에있는 질문을 검색하여 실제 텍스트가 있는지 확인합니다 데이터베이스 테이블에서 업데이트되었습니다. 내 PHP 응용 프로그램은 다음과 같이 테이블에 (링크)에 대한 설명과 함께 간단한 웹 사이트 링크를 추가하는 간단한 하나입니다PHP에서 SQL 업데이트 쿼리가 작동하지 않습니다.

<form action="update.php" method="post"> 
    <p><input type="text" name="description" value="<?php echo($desc); ?>" /></p> 
    <p><input type="text" name="link" value="<?php echo($link); ?>" /></p> 
    <p><input type="submit" value="Save Changes" /></p> 
</form> 

물론이 코드는 edit.php 페이지에서하지만 나는 UPDATE를 실행하려고 할 때 구문에 문제가 있음을 알리는 오류를 throw합니다. "침묵을"의 "엄마의는"그것을 만드는 후 잘 갱신이 단지는 ':

설명 내가 밖으로 걸릴 경우 "엄마의 Tutition 사이트"

예를 들어 본문에'있을 때 발생하는 것 같습니다 ! 누구나 왜이 문제를 해결할 수있는 가능한 해결책이나 코드를 설명 할 수 있습니까?

미리 도움을 청하십시오!

데이브.

+0

를 사용하여 MySQL의 실제 이스케이프 문자열을 삽입하기 전에

또는 사용 당신은 MySQL의 라이브러리를 사용합니다. – Mihai

+0

update.php에 코드 게시 – Mihai

+0

최종 생성 된 HTML을 보았습니까? – JAL

답변

1

사용 PDO를 놓기 전에 당신에게 데이터

$data = sanitize("Mom's");  
function sanitize($data){ 
     $data= htmlentities(strip_tags(trim($data))); 
     return $data; 
    } 

이 더 자신을 보호 할 수있는 안전한 방법을

$name = "Mom's"; 
$db = new PDO('mysql:host=localhost;dbname=databasename', $user, $pass); 
//establish new connection 

$statement = $database->prepare("UPDATE TABLE xyz SET name=?"); 
$statement->execute(array($name)); 

을 먼저 소독합니다. 수동 이탈은 필요하지 않습니다.

$msg = mysql_real_escape_string($string); 

경우 데이터를

+0

고맙습니다. 정보, 그것은 대접을 일했다! 대단히 감사합니다! – GeordieDave1980

-1

'을 SQL에 삽입하면 오류가 발생하므로 위험합니다. SQL 주입이라고합니다. 삽입 전에 'htmlentities() 또는 addslashes()와 같은 PHP 함수를 사용해보십시오.

+2

SQL 인젝션은 단순히 SQL에'''을 삽입하는 것이 아닙니다.'''를 삽입하는 것이 유효 할 수 있지만 코드에서 수동으로 수행 했든 아니면 준비된 구문을 사용하여 실행해야합니까? –

0

가 마지막으로 업데이트 문으로 변환됩니다 때

...somecolname = 'Mum's.....' 

처럼되고 작은 따옴표가 문자열의 끝처럼 보인다 때문입니다. 작은 따옴표 두 개로 대체해야합니다. 그것은 더

처리 데이터베이스에 대한 문에 함께

관련 문제