mysqli_query()null给出错误

时间:2013-09-26 14:20:54

标签: php mysqli

这些代码有什么问题?我对mysqli非常新。我总是得到这个错误

  

警告:mysqli_query()要求参数1为mysqli,在第11行的C:\ localhost \ path \ core.php中给出null   错误,查询失败!!!

我测试了连接,它正在工作和连接,所以我不明白为什么我总是看到这个警告,我的查询失败。我也检查了查询,这是正确的。这是我的代码:

的configuration.php

<?php
$dbhost = 'xxx'; 
$dbuser = 'xxx';
$dbpass = 'xxx'; 
$dbname = 'xxx'; 

$conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname) or die ('Error connecting to mysql');

?>

core.php中

<?php
require_once('configuration.php');

class Core {
    public $coreTable;
    public $result;
    public $num_rows;

    function Execute($query) {
        $this->result = mysqli_query($conn,$query) or die('Error, query failed!!!'); //line 11
        $this->row_cnt = mysqli_num_rows( $this->result );
    }
}
?>

3 个答案:

答案 0 :(得分:3)

你可能试图在Core类之外找到一个变量。首先,您可能希望在此处阅读variable scope

快速而肮脏的解决方案是:

第一次实例化Core类时注入$conn变量。

向Core类添加__construct() {}方法:

<?php
require_once('configuration.php');

class Core {
    public $connection; // Notice here
    public $coreTable;
    public $result;
    public $num_rows;

    /**
     * Documenting classes and methods is a good practice.
     * Constructor method
     * 
     * @param Resource $conn Mysql connection.
     * @return void
     */
    public function __construct($conn)
    {
       $this->connection = $conn;
    }

    function Execute($query) {
        $this->result = mysqli_query($this->connection,$query) or die('Error, query failed!!!'); //line 11
        $this->row_cnt = mysqli_num_rows( $this->result );
    }
  }
?>

当你第一次实例化你的Core类时:

$class = new Core($conn); // We are injecting the $conn here

多数民众赞成。如果您觉得有趣,请在此处详细了解dependency injection

答案 1 :(得分:0)

$ conn不存在于您当前使用的范围内

在创建时将连接传递给类或使用全局变量$ conn

答案 2 :(得分:0)

这是一个可变范围问题。您的$conn变量是在函数范围之外定义的,并且在Core类中不可用。

作为快速修复,您可以将其更改为全局变量:

global $conn;

有关详细信息,请参阅PHP Manual文档。