2016-05-06 9 views
0

私は単純なDB接続を作成しており、テストしているときは動作していません。 私は間違っていますか? ファイルデータベース:警告:mysqli_query()は、mysqli、nullで指定されたパラメータ1を受け取ります。

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']; 

そして、この警告を参照してください。 、さあ、あなたのコードを再投稿しましょうます$ this-> これだけ時間がます$ this->を追加:

+3

'$ connection'ではなく' open_connection() 'の' $ this-> connection'です。 –

+1

'$ db = $ database;'は、 '&' –

+0

のマークバーを使用する必要はありません。あなたのアドバイスは正しい –

答えて

-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; 
関連する問題