在非对象上调用成员函数execute()

时间:2012-01-25 08:28:32

标签: php mysql

包含该错误的脚本是:

$stmt = $this->db->prepare('SELECT libelle,activite,adresse,tel,lat,lng FROM etablissements where type IN ('.$in_list.')');
        $stmt->execute();
        $stmt->bind_result($libelle,$activite,$adresse,$tel,$lat,$lng);

在服务器上运行的php版本(不是localhost)是5.2.17

4 个答案:

答案 0 :(得分:5)

$stmt应该是方法execute()的对象 好像$this->db->prepare()似乎没有返回好结果。

如果$this->dbmysqli()对象,您应该bind the parameters这样:

if ($stmt = $this->db->prepare('SELECT libelle,activite,adresse,tel,lat,lng FROM etablissements where type IN (?)')) {
  $stmt->bind_param("s", $in_list);
  $stmt->execute();
  // ...
}

答案 1 :(得分:1)

检查你执行的sql,

$this->db->prepare('SELECT libelle,activite,adresse,tel,lat,lng FROM etablissements where type IN ('.$in_list.')');

不会返回有效的语句对象。

答案 2 :(得分:0)

交换语句绑定并执行并将结果替换为param,它将正常工作

$stmt = $this->db->prepare('SELECT libelle,activite,adresse,tel,lat,lng FROM etablissements 
where type IN ('.$in_list.')');
$stmt->bind_param($libelle,$activite,$adresse,$tel,$lat,$lng);
$stmt->execute();

答案 3 :(得分:-2)

您的db对象为null。检查是否过早关闭连接或以某种方式将其覆盖为null。