2016-05-06 159 views
0

我正在写简单的数据库连接,当我测试它时,它不起作用。 我做错了什么? 文件数据库:警告:mysqli_query()期望参数1是mysqli,null给出

require_once("config.php"); 

class MySqlDatabase{ 
    private $connection; 

    function __construct(){ 
     $this->open_connection(); 
    } 
    public function open_connection(){ 
     $connection = mysqli_connect(DB_SERVER , DB_USER , DB_PASS , DB_NAME); 
     if(!$connection){ 
      die("Database connection failed:" . mysqli_error($connection)); 
     } 
    } 
    public function query($sql){ 
     $result = mysqli_query($this->connection , $sql); 
     $this->confirm_query($result); 
     return $result; 
    } 
    private function confirm_query($result){ 
     if(!$result){ 
      die("Database query failed: ".mysqli_error($this->connection)); 
     } 
    } 
} 

$database = new MySqlDatabase(); 
$db =& $database; 

比我做的请求:

if(isset ($database)) {echo"true";}else {echo "false";} 

$sql ="INSERT INTO users (id, username, password, first_name, last_name)"; 
$sql .="VALUES (1,'olegsavchuk12','1111','Oleg','Savchuk')"; 
$result = $database->query($sql); 
$sql = "SELECT * FROM users WHERE id=1"; 
$result_set = $database->query($sql); 
$found_user = mysqli_fetch_all($result_set); 
echo $found_user['username']; 

而看到此警告。

+3

'open_connection()'中的'$ this-> connection',而不是'$ connection' –

+1

'$ db = $ database;'会做,不需要伪造'&' –

+0

Mark Ba​​ker thx。你的建议是对的 –

回答

-1

你的代码是除了遗漏的7级简单人物清洁:$这个 - > 现在,让我们重新发布代码,只是这次加入$这个 - >

<?php 
     require_once("config.php"); 

     class MySqlDatabase{ 
      private $connection; 

      function __construct(){ 
       $this->open_connection(); 
      } 
      public function open_connection(){ 
       // THIS SHOULD READ $this->connection NOT $connection 
       // YOU ARE IN A CLASS REMEMBER ;-) 
       $this->connection = mysqli_connect(DB_SERVER , DB_USER , DB_PASS , DB_NAME); 
       // HERE HAS ALSO THE SAME ISSUE AS ABOVE 
       if(!$this->connection){ 
        // AND EVEN HERE TOO:: 
        die("Database connection failed:" . mysqli_error($this->connection)); 
       } 
      } 
      public function query($sql){ 
       // INCIDENTALLY; YOU DID IT PERFECTLY HERE!!! ;-) 
       $result = mysqli_query($this->connection , $sql); 
       $this->confirm_query($result); 
       return $result; 
      } 
      private function confirm_query($result){ 
       if(!$result){ 
        die("Database query failed: ".mysqli_error($this->connection)); 
       } 
      } 
     } 

     $database = new MySqlDatabase(); 
     $db =& $database; 
相关问题