开发者社区> 问答> 正文

致命错误:在布尔值上调用成员函数bind_param()

我忙于从数据库获取设置的功能,突然,我遇到了此错误:

Fatal error: Call to a member function bind_param() on boolean in C:\xampp2\htdocs\application\classes\class.functions.php on line 16 通常,这意味着我要从不存在的表和内容中选择内容。但是在这种情况下,我不是...

这里的getSetting功能:

public function getSetting($setting) { $query = $this->db->conn->prepare('SELECT value, param FROM ws_settings WHERE name = ?'); $query->bind_param('s', $setting); $query->execute(); $query->bind_result($value, $param); $query->store_result(); if ($query->num_rows() > 0) { while ($query->fetch()) { return $value; if ($param === '1') { $this->tpl->createParameter($setting, $value); } } } else { __('invalid.setting.request', $setting); } } 该$this->db变量是通过构造函数。如有需要,这里是:

public function __construct($db, $data, $tpl) { $this->db = $db; $this->tpl = $tpl; $this->data = $data; $this->data->setData('global', 'theme', $this->getSetting('theme')); } 另外,由于我正在使用数据库,因此我的数据库连接为:

class Database { private $data;

public function __construct($data)
{
$this->data = $data;
$this->conn = new MySQLi(
  $this->data->getData('database', 'hostname'), 
  $this->data->getData('database', 'username'), 
  $this->data->getData('database', 'password'), 
  $this->data->getData('database', 'database')
);
if ($this->conn->errno)
{
    __('failed.db.connection', $this->conn->errno);
}
date_default_timezone_set('Europe/Amsterdam');

} 我已经测试了该连接,它可以按预期100%正确地工作。我在配置文件中设置数据库连接的东西:

'database' => array( 'hostname' => '127.0.0.1', 'username' => 'root', 'password' => ******, 'database' => 'wscript' ) 现在奇怪的是;表存在,请求的设置存在,数据库存在,但是仍然不会出现该错误。

展开
收起
保持可爱mmm 2020-05-08 11:10:03 542 0
1 条回答
写回答
取消 提交回答
  • 问题在于:

    $query = $this->db->conn->prepare('SELECT value, param FROM ws_settings WHERE name = ?'); $query->bind_param('s', $setting); 该prepare()方法可以返回false,您应该检查一下。至于为什么返回false,也许表名或列名(在SELECT或WHERE子句中)不正确?

    另外,考虑使用类似$this->db->conn->error_list检查语法分析中发生的错误的方法。(我偶尔也会回显实际的SQL语句字符串,并粘贴到phpMyAdmin中进行测试,但是肯定有一些失败的地方。)来源:stack overflow

    2020-05-08 11:10:13
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
建立联系方法之一 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载