首页 > 后端开发 > php教程 > 为什么更新查询后 PDO 返回 \'SQLSTATE[HY000]\' 而不是成功?

为什么更新查询后 PDO 返回 \'SQLSTATE[HY000]\' 而不是成功?

Linda Hamilton
发布: 2024-10-22 23:05:29
原创
968 人浏览过

Why Does PDO Return

PDO 更新错误:了解“SQLSTATE[HY000]”

尝试使用 PDO 更新数据库时,可能会出现错误“SQLSTATE[HY000]:一般错误”被退回。这个错误可能看起来令人费解,因为尽管报告了错误,数据库仍然成功更新。

错误原因

此错误的根本原因是不正确使用更新或插入查询后的 fetchAll() 方法。 PDO 的 fetchAll() 方法通常用于检索受选择查询影响的所有行。但是,当执行更新或插入操作时,此方法不是必需的。

错误代码示例

以下代码尝试更新数据库表并检索所有使用 fetchAll() 更新行:

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();
}
登录后复制

在这种情况下,由于更新查询后使用 fetchAll(),将抛出错误“SQLSTATE[HY000]: General error”。

正确解决方案

要纠正此错误,只需从代码中删除 fetchAll() 语句即可。修改后的代码如下所示:

try {
    $stmt = $pdo->prepare("UPDATE $page SET $section = :new_content WHERE $section = '$old_content'");
    $stmt->execute(array('new_content' => $new_content));
    echo "Database updated!";
}
catch(PDOException $e) {
    echo 'ERROR UPDATING CONTENT: ' . $e->getMessage();
}
登录后复制

通过省略 fetchAll() 语句,错误消息“SQLSTATE[HY000]: General error”应该消失,从而成功更新数据库。

以上是为什么更新查询后 PDO 返回 \'SQLSTATE[HY000]\' 而不是成功?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板