我在Linux机器上有PHP 5.2.3,apache2.x,mysql 5.x.直到昨天,一切都很好。今天早上突然间有一个php文件开始抛出“致命错误:调用一个非对象的成员函数execute()”。我使用PDO(准备,执行,关闭游标等)。你有遇到过这个问题吗?有人知道这个问题吗。
非常感谢, [R
答案 0 :(得分:2)
您的prepare
电话可能失败了。这可能是由于SQL语句无效。
我们需要确切知道您正在使用哪个库来了解更多信息,但prepare
可能会返回false
而不是对象。然后,当您尝试在返回值上调用execute
时,您尝试在false
而不是对象上调用它,从而导致出现错误消息。
如果您echo
或var_dump
正在调用execute
,则可以查看更多详细信息。
答案 1 :(得分:0)
正如艾伦所说,问题可能是prepare
正在返回false
而不是PDOStatement
。调试此方法的最佳方法是打开警告。为此,请在初始化PDO后立即输入此代码:
$db = new PDO(); // insert the following after this line
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
这意味着当prepare语句失败时,PDO将引发PHP警告。这应包含有助于您调试问题的信息。