-3

この部分のどこかでエラー ( **Fatal Error : Call to undefined method Database::query()**) が発生しています。どこから来たのかわかりません。コンストラクタを変更したばかりなので

Class Database{

public function __construct(){

    $this->getConn();
}
public function getConn(){
    return new mysqli("localhost", "root", "", "os_db");
}
public function select($query){
    $data = array();
    if($result = $this->query($query)){
        while($row = $result->fetch_assoc()){
            $data[] = $row;
        }
    }else{
        $data = array();
    }
return $data;
}
}

クエリをこれに変更した場合if($result = $this->getConn()->query($query)..それは完全に機能します..とにかく、接続を呼び出さなければならないことはありますか?$this->query($query)

4

1 に答える 1

-2
Class Database {

  public function __construct() {

    $this->getConn(); 

  } 

  public function getConn() { 

    $db = new mysqli("localhost", "root", "", "os_db"); 
    $this->db = $db;

  } 

  public function select($query) { 

    $data = array(); 

    if($result = $this->db->query($query)){ 

      while($row = $result->fetch_assoc()){ 

        $data[] = $row; 

      } 

    } else { 

      $data = array(); 

    } 

    return $data;

  }

}

または、クラスが呼び出されるたびに接続する代わりに、次のようなことができます。

Class Database {

  public function __construct() {

  } 

  public function getConn() { 

    $db = new mysqli("localhost", "root", "", "os_db"); 
    $this->db = $db;

  } 

  public function select($query) { 

    $this->getConn();

    $data = array(); 

    if($result = $this->db->query($query)){ 

      while($row = $result->fetch_assoc()){ 

        $data[] = $row; 

      } 

    } else { 

      $data = array(); 

    } 

    return $data;

  }

}
于 2013-09-01T07:00:10.270 に答える