PDO错误:“ SQLSTATE [HY000]:常规错误”更新数据库时

使用PDO更新数据库时出现错误。我是PDO的新手,所以问题可能很小,我只是不明白。 关于错误的有趣的是,该命令可以正常运行,并且数据库确实得到了更新。 但是它仍然向我返回错误。


码:


try {

    $stmt = $pdo->prepare("UPDATE $page SET $section = :new_content WHERE $section = '$old_content'");

    $stmt->execute(array(

        'new_content' => $new_content

    ));

    $result = $stmt->fetchAll();

    echo "Database updated!";

}

catch(PDOException $e) {

    echo 'ERROR UPDATING CONTENT: ' . $e->getMessage();

}

错误: 错误更新内容:SQLSTATE [HY000]:一般错误


我真的不知道问题可能在哪里,因为它非常怪诞,而且我无法找到遇到相同问题的任何人。


湖上湖
浏览 714回答 3
3回答

郎朗坤

请注意,发生此错误的另一个可能原因是,如果在现有父$ stmt循环内使用变量$ stmt进行第二次数据库调用。     $stmt = $conn->query($sql);    while ($row = $stmt->fetch()) {  //second use of $stmt here inside loop

aluckdog

$old_content对我来说将是一个大危险信号。进入查询字符串的任何动态数据都可能有害。仅仅因为您将其从数据库中拔出并不意味着它是安全的。例如考虑像update users set name='Miles T. O\'Brien' where name='Miles O'Brien';。您转义了新近更新的名称,但是从数据库中拉起了原始名称,现在,您已经为自己注入了语法错误。
打开App,查看更多内容
随时随地看视频慕课网APP