更新查询更改文本PDO

时间:2015-03-18 12:52:07

标签: php mysql pdo

所以我试图更新一个数据库表,通过诅咒这里的坏词是我的查询,但我不太清楚如何做到这里是我的代码

$query2 = $bdd->prepare("SELECT texte FROM commentaires");
$query2->execute();
$res2 = $query2->fetchAll();
foreach($res2 as $result) {
    $originaltext = $result["texte"];
    $newtext = grosmots($result["texte"]);
    $query2 = $bdd->prepare("UPDATE commentaires SET texte = {$newtext} WHERE texte = :oldtext");
    $query2->bindValue(":oldtext", $originaltext);
    $query2->execute();
}
 print '<pre>';
    print_r($res2);
    print '</pre>';;

2 个答案:

答案 0 :(得分:1)

您错过了引用$ newtext变量。

但是当你使用PDO时,你应该避免在查询中放入一个变量,似乎你的代码容易受到SQL注入攻击。我建议做出以下改变:

$statement = $bdd->prepare('UPDATE commentaires SET texte = :newtext WHERE texte = :oldtext;');
$statement->bindValue(":newtext", $newtext);
$statement->bindValue(":oldtext", $originaltext);
$statement->execute();

答案 1 :(得分:0)

更改您使用SET texte = {$newtext}

的方式

MySQL会抱怨这一点。

修改您的查询,使其显示为:

SET texte = '".$newtext."'

或者,你可以使用另一个绑定。


在打开连接后立即添加$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

旁注:错误报告应仅在暂存时完成,而不是生产。