0

ローカルデータベースへの接続をテストする次のコードがあります-

 $database = array(
"hostname"=>'localhost',
"username"=>'root',
"password"=>'root',
"database"=>'mydb'
);

 /**
 * 
 */
 class Book
 {  
private $book_id;
private $dbLink;

function __construct($book_id)
{
    $this->book_id=$book_id;
    $this->dbLink = mysqli_connect($database['hostname'],$database['username'],$database['password'],$database['database']) or die("Error " . mysqli_error($this->dbLink));
    //var_dump($this->dbLink);
}

function qBook(){
    $query = "SELECT * FROM books";
    var_dump($this->dbLink->query($query));     
}

 }//class

$book = new Book(3);
$book->qBook();

問題は、dbLink オブジェクトを適切に取得することですが、クエリがリソースを返さないことです。ただし、ファイル内で同じクエリを実行すると、オブジェクトの外側でクエリがフェッチされます。参考までに、コマンド ラインからスクリプトを実行しています。私が見逃しているものはありますか?

4

3 に答える 3

0

「おっと」瞬間..コンストラクターに次の行を追加するのを忘れました-

global $database;
于 2013-11-11T06:56:29.130 に答える
0

「var database not found」というエラーが表示される場合があります

コンストラクターでは、クラスの外部変数を直接使用することはできません...したがって、コンストラクターで$databaseを渡します...

   $book = new Book(12,$database);

このようにコンストラクタを変更します

   function __construct($book_id,$database)
   {
     $this->book_id=$book_id;
     $this->dbLink =  mysqli_connect($database['hostname'],$database['username'],$database['password'],$database['database']) or die("Error " . mysqli_error($this->dbLink));
    //var_dump($this->dbLink);
  } 

このように動作します...

それがあなたを助けることを願っています

于 2013-11-11T06:47:11.057 に答える