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

用这个:

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

注意:您提供的密码真的是“root”吗?请也检查一下。

于 2013-11-11T08:33:06.720 回答
0

您可能会收到错误“未找到 var 数据库”

直接在构造函数中你不能使用类的外部变量......所以你已经通过构造函数传递了$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 回答
0

'oops' 时刻.. 忘记在构造函数中添加以下行 -

global $database;
于 2013-11-11T06:56:29.130 回答