Php 更新查询更改文本PDO

Php 更新查询更改文本PDO,php,mysql,pdo,Php,Mysql,Pdo,因此,我试图更新一个数据库表,在我的查询中,通过咒骂出不好的单词,但我不太确定如何更新,这是我的代码 $query2 = $bdd->prepare("SELECT texte FROM commentaires"); $query2->execute(); $res2 = $query2->fetchAll(); foreach($res2 as $result) { $originaltext = $result["texte"]; $newtext = g

因此,我试图更新一个数据库表,在我的查询中,通过咒骂出不好的单词,但我不太确定如何更新,这是我的代码

$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>';;

更改使用SET texte={$newtext}的方式

MySQL将对此抱怨

修改查询,使其内容如下:

$statement = $bdd->prepare('UPDATE commentaires SET texte = :newtext WHERE texte = :oldtext;');
$statement->bindValue(":newtext", $newtext);
$statement->bindValue(":oldtext", $originaltext);
$statement->execute();
或者,您可以使用另一个绑定

添加$bdd->setAttributePDO::ATTR_ERRMODE,PDO::ERRMODE_异常;就在连接打开之后


旁注:错误报告只能在暂存阶段进行,而不能在生产阶段进行。

您没有引用$newtext变量

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


grosmots函数做什么?添加$bdd->setAttributePDO::ATTR_ERRMODE,PDO::ERRMODE_异常;在连接打开之后。它是法语中的坏单词,它所做的就是用-******-替换坏单词-我要做的就是更新表行并用这个-******-替换所有坏单词@AbhikChakrabortyI补充说@Fred ii-不,我在这里得到一个错误,它是:代码PHP致命错误:未捕获异常'PDOException',消息'SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在“!@*$附近使用的正确语法LIDEKSLS其中texte='HASTAGE LIDEKSLS at line 1'/antigrosmots.php25:PDOStatement->execute 1{main}抛出/antigrosmots.php,在第25行它与{$newtext}有关。您应该为此添加另一个绑定,或者使用不同的引用方法。或者,尝试设置texte='.$newtext'
$statement = $bdd->prepare('UPDATE commentaires SET texte = :newtext WHERE texte = :oldtext;');
$statement->bindValue(":newtext", $newtext);
$statement->bindValue(":oldtext", $originaltext);
$statement->execute();