2013-07-22 3 views
-2

Незначительная проблема при обновлении записей в MySQL с использованием PDO. Он не обновляется, когда я использую грамматику, поэтому для примера, если я использую: ', это не позволяет мне. Я использую свою подготовку, но это просто апостроф, который не работает?Проблема с использованием грамматики с 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

Смежные вопросы