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


call to a member function execute() on a non-object

包含该错误的脚本是:

$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);

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

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

如果$this->dbmysqli()对象,则应该绑定以下参数:

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();
  // ...
}

检查您执行的sql,

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

未返回有效的语句对象。

交换语句绑定并执行,并将结果替换为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();

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