【问题标题】:Call to a member function query() on a non-object in PHP在 PHP 中调用非对象的成员函数 query()
【发布时间】:2014-04-21 13:55:59
【问题描述】:

我在从 mysql 转换到 mysqli 时遇到了一点问题。它由显示的此错误组成:调用非对象上的成员函数查询()

这里是config.php:

$db = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if ($db->connect_error) {
  trigger_error('Error: ' . $db->connect_error, E_USER_ERROR);
}

这是statistics.php中的函数:

 public function getTotalServerCount() {
   $sql = 'SELECT * FROM controlpanel.server';
   $total = $db->query($sql);
   echo $total;
 }

请注意,此函数包含在名为 statistics 的类中。

我了解原始代码是以一种相当程序化的方式完成的,我正在尝试将其转换为面向对象的方式,但我至今无法找到解决方案。

【问题讨论】:

  • 你确定你包含了配置文件吗?在statistics.php 中尝试var_dump($db)
  • $db 范围在函数中不可访问。您需要在要使用该对象的函数中传递该对象。
  • $db 在您的getTotalServerCount() 函数范围内不可用
  • 提示:1) 启用完整的错误报告(包括通知) 2) 阅读手册中的使用示例

标签: php mysql object mysqli


【解决方案1】:

$db 在此函数范围内未定义,如果 $db 是该类的属性,则可以这样做

$total = $this->db->query($sql);

您也可以将其作为参数传递:

public function getTotalServerCount($db) {
  //...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-15
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 2014-03-15
    相关资源
    最近更新 更多