php手册(http://www.php.net/manual/en/pdostatement.execute.php)在返回值中提到:“成功时返回TRUE,失败时返回FALSE。”
我正在编写一个带有几个PDO :: execute语句的php脚本。当PHP:PDO确实会返回FALSE时应该怎么做?停止整个脚本(调用exit())或继续或其他什么? Execute()返回false的可能原因是什么?或者只是假设一个非常理论化的场景几乎从未在卷轴上发生?
答案 0 :(得分:4)
这取决于程序执行查询的重要性。 没有处理/忽略它的标准方式。
它可能会帮助您使用PDO的errorCode() / errorInfo()功能,因此您可以通过不同的方式处理不同的错误。
查看errorCode()
手册页中给出的第一个示例,其中execute()
失败。
答案 1 :(得分:1)
这实际上取决于您执行的查询类型。如果它是事务的一部分,您可能想要回滚它。 如果它对后续程序执行至关重要,您肯定会想要停止它并显示错误消息。 如果你的程序可以没有它,你可以忽略它或以你认为正确的任何方式处理。
出现错误时返回false。可能由于缺乏连接,参数不当等原因而发生。
答案 2 :(得分:0)
冒着写下不正确答案的风险,我不确定在使用PDO::ERRMODE_EXCEPTION
时是否应该检查PDOStatement::execute()
的返回值是否值得。或者,要回答您提出的问题,PDOStatement::execute()
在FALSE
下返回PDO::ERRMODE_EXCEPTION
似乎是理论上的情况-如果确实发生了,您的请求(如果不是整个Apache进程)很可能注定要失败。
the source code of PDOStatement::execute
中RETURN_FALSE
的“真正”出现很少且相差甚远。 “真正的”是指未注释掉,也不跟随PDO_HANDLE_STMT_ERR
(名称中的is just pdo_handle_error
,does as it says)。实际上,似乎PDOStatement::execute
可能返回FALSE
的唯一情况(再次,假设已设置PDO::ERRMODE_EXCEPTION
)是内存分配错误,它们是very likely to be unrecoverable