【发布时间】:2012-12-12 13:07:13
【问题描述】:
我对 MySQL 数据库进行了非常标准的调用,但由于某种原因,我无法让代码正常工作。这是我所拥有的:
$mysqli = mysqli_connect("localhost","username","password");
if (!$mysqli)
{
die('Could not connect: ' . mysqli_error($mysqli));
}
session_start();
$sql = "SELECT * FROM jobs ORDER BY id DESC";
$result = $mysqli->query($sql);
$num_rows = mysqli_num_rows($result);
现在,首先,我知道它连接正确,因为我没有得到 die 方法,而且我之前在其中添加了一个 else 条件并且它已检查出来。然后页面显示,但我收到错误:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in blablabla/index.php on line 11
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in blablabla/index.php on line 12
我已经仔细检查了我的数据库,并且有一个名为 jobs 的表,其中有一行“id”(它是主行)。让我感到困惑的是,这是我从我建立的另一个网站上复制和粘贴的代码,由于某种原因,该代码在这个网站上不起作用(我显然复制并粘贴了它,然后只是相应地更改了表名和行)。
我看到错误并尝试:
$num_rows = $mysqli_result->num_rows;
$row_array = $mysqli_result->fetch_array;
并修复了错误,但没有传递任何数据(因为显然 $mysqli_result 没有价值)。我不知道为什么会出现这样的错误(它与其他站点的 MySQL 或 PHP 版本不同)?
有人可以帮我找出问题所在吗?非常感谢。抱歉,如果我忽略了一些超级简单的事情,我已经研究了一段时间了。
【问题讨论】:
-
您没有检查
mysqli_query的返回值。它可以返回布尔值而不是语句句柄。 -
一件事,把你的
session_start();放在mysqli_connect 上面,因为如果发生错误它会生成输出。这也会导致 session_start 失败。 -
您确定要连接到本地主机上的正确数据库吗?我在上面的代码片段中没有看到选择数据库的位置?