2017-07-14 8 views
2

このクラスはmysqlを使用していますが、廃止予定です。私はそれをPDOかmysqliを使って動作させようとしていますが、100%確実に動作させる方法はありません。クラスにsqliまたはPDOを使用してデータベースに接続

class DB { 
    private $link; 
    private $host, $username, $password, $database; 
    public function __construct($host, $username, $password, $database){ 
     $this->host  = $host; 
     $this->username = $username; 
     $this->password = $password; 
     $this->database = $database; 

     $this->link = mysqli_connect($this->host, $this->username, $this->password) 
      OR die("There was a problem connecting to the database."); 

     mysqli_select_db($this->link,$this->database) 
      OR die("There was a problem selecting the database."); 

     return true; 
    } 
    public function query($query) { 
     $result = mysqli_query($link,$query); 
     if (!$result) die('Invalid query: ' . mysqli_error()); 
     return $result; 
    } 

    public function __destruct() { 
     mysqli_close($this->link) 
      OR die("There was a problem disconnecting from the database."); 
    } 

public function gettingDepartments(){ 
     $db = new DB("localhost", "root", "", "visitorform"); 
     $result = $db->query("SELECT * FROM tb_user_dept"); 
     return $result; 
    } 


} 

これは私が取得エラーです:

警告:mysqli_query()は、パラメータ1はmysqliの、nullを与えられることを期待しています。 mysqli_errorは()あなたがmysqli_error()mysqli_query()とは全く何にも有効なパラメータを渡していないあなたのエラーメッセージを1として

+0

あなたはmysqli_query 'に' $のlink'という変数に渡している() 'が、どこでもそれを設定していません... –

+1

$ result = mysqli_query($ link、$ query); '$ result = mysqli_query($ this-> link、$ query);' – cteski

+1

誰かが償却されていて完全には実現していないのを見てその事実を無視する。 –

答えて

0

与えられた正確に1パラメータ、0を期待しています。あなたのDBクラスquery()方法で

はまだ設定されていないmysqli_query()$linkという名前のローカル変数を渡している(したがって、それはnullであなたを語っています)。代わりに、クラス変数を渡す必要があります。

同様に、実行していない同じクラスインスタンス変数$linkmysqli_error()に渡す必要があります。あなたのDBクラスquery()方法について

更新されたコードは以下のように更新する必要があります。

public function query($query) { 
    $result = mysqli_query($this->link, $query); 
    if (!$result) die('Invalid query: ' . mysqli_error($this->link)); 
    return $result; 
} 
関連する問題