怎么做PHP PDO execute()返回false?

时间:2014-02-06 13:22:03

标签: php

php手册(http://www.php.net/manual/en/pdostatement.execute.php)在返回值中提到:“成功时返回TRUE,失败时返回FALSE。”

我正在编写一个带有几个PDO :: execute语句的php脚本。当PHP:PDO确实会返回FALSE时应该怎么做?停止整个脚本(调用exit())或继续或其他什么? Execute()返回false的可能原因是什么?或者只是假设一个非常理论化的场景几乎从未在卷轴上发生?

3 个答案:

答案 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::executeRETURN_FALSE的“真正”出现很少且相差甚远。 “真正的”是指未注释掉,也不跟随PDO_HANDLE_STMT_ERR(名称中的is just pdo_handle_errordoes as it says)。实际上,似乎PDOStatement::execute可能返回FALSE的唯一情况(再次,假设已设置PDO::ERRMODE_EXCEPTION)是内存分配错误,它们是very likely to be unrecoverable