【发布时间】:2011-11-01 20:49:59
【问题描述】:
当我使用自定义函数执行 MySQLi 查询时,出现此错误...
Fatal error: Call to a member function execute() on a non-object in /Applications/MAMP/htdocs/RevFramework/Application/Model/Engine/eMySQLi.php on line 92
我真的不知道出了什么问题...也就是说,如果我将 $types 和 $params 设置为 null,否则我确定 call_user_func_array 也会抛出错误。
public function query($SQL, $types = null, $params = null)
{
$this->result = $this->db->prepare($SQL);
if(isset($types) && isset($params))
{
$bind_names[] = $types;
for ($i = 0; $i < count($params); $i++)
{
$bind_name = 'bind' . $i;
$$bind_name = $params[$i];
$bind_names[] = &$$bind_name;
}
call_user_func_array(array($this->result, 'bind_param'), $bind_names);
}
$this->result->execute();
}
它正在执行的查询:
$class->query("SELECT name FROM rev_widgets ORDER BY order");
我完全不知道可能出了什么问题。
感谢任何帮助!
【问题讨论】:
-
$this->result = $this->db->prepare($SQL);行没有返回您期望的结果。您可以发布vardump( $this->result )的输出吗?此外,您可能希望咨询manual for PDO::prepare,了解有关它引发的错误和异常的更多信息。 -
var_dump($this->result);返回bool(false)。谢谢,但我使用的是 MySQLi,不过会检查一下。 -
bool(false) 表示您的
result字段不包含任何对象。也许你的db->prepare()方法失败了。