MySQLi使用OOP并获得致命错误:在非对象上调用成员函数query()

时间:2014-01-23 19:02:59

标签: php mysqli

这很简单,我看到很多类似的东西,但没有什么是基本的。尝试使用以下代码设置OOP MySQLi连接时:

<?php

$link = new mysqli('localhost', 'root', '');

if (!$link) {
  die('Connection Failed: '. $link->error());
}

$sql = "SELECT artist_name FROM artists";

$result = $link->query($sql);

while ($row = $result->fetch_assoc()) {
  printf('Artist: %s<br />', $row['artist_name']);
}

$result->close();

$link->close();

我得到以下错误:$ result-&gt; fetch_assoc()

Fatal error: Call to a member function query() on a non-object in
C:\xampp\htdocs\PHPbook\chapter4\test2.php on line 9 

我尝试了一些东西,发现$link确实是对象,但$result布尔。 这段代码来自我正在阅读的一本书,并想知道自书写完以来是否有任何改变。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

您忘了选择数据库:

mysqli_select_db($link, 'DATABASE_NAME');

答案 1 :(得分:0)

您没有与数据库的连接。请参阅Call to member function query() on a non-object告诉您方法调用query无法执行,因为link尚无法使用该方法。只需选择一个数据库并检查您是否确实与该数据库建立了真正的连接。

<?php

$link = new mysqli('localhost', 'root', '', 'db_name');

if ($link->connect_error === true) {
  trigger_error('No Connection', E_USER_ERROR);
}

// Continue with your logic ...