2013-07-22 3 views
-2

PDO를 사용하여 MySQL에서 레코드를 업데이트 할 때 사소한 문제가 있습니다. 문법을 사용할 때 예를 들어 업데이트하면 업데이트되지 않습니다. 사용하는 경우 : ' 실패합니다. 나는 준비를하고 있지만 작동하지 않는 것은 아포스트로피 일뿐입니다.PDO에서 문법을 사용할 때의 문제

if($_POST['ourstory']) { 
    foreach($_POST['ourstory'] as $id => $ourstory) { 
     $sql = "UPDATE our_story SET content = '$ourstory' WHERE id = '$id'"; 
     $q = $db->prepare($sql); 
     $q->execute(array($id,$ourstory)); 
    } 
} 
+5

SQL 문자열에 바로 추가하는 대신 변수를 바인딩해야합니다. – andrewsi

+1

? 이 물음표는 실제로 대답입니다. : P – Manu

+0

SQL 주입 공격에 취약합니다. 준비된 문장을 사용하고 있기 때문에 ** 자리 표시자를 사용해야합니다 **. 예 : '... content =? WHERE id =?', –

답변

1

이것은 준비된 문장을 사용하는 방법이 아닙니다. 쿼리에 ?을 사용하려고합니다.

$sql = "UPDATE our_story SET content = ? WHERE id = ?"; 
$q = $db->prepare($sql); 
$q->execute(array($ourstory, $id)); 
+0

고맙습니다. 나는 영어와 잘 어울리지 않지만, 대단히 감사합니다. –

+0

당신은 환영합니다 :-) –

+1

또한'SET content = : content WHERE id = : id' 그리고'execute (array (': content'=> $ content, ': id'=> $ id '))'. – tadman

관련 문제