尝试使用 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中文网其他相关文章!