可能重复:
PHP Error: mysql_fetch_array() expects parameter 1 to be resource, boolean given
我正在尝试在查询后从mysql对象构建一个数组。
查询中返回的数字是68,这就是为什么我认为forloop会很好。但是php不喜欢我在forloop中的代码。
以下是代码:
$result = $db->query("SELECT * FROM `networktariff`");
$rows = mysql_num_rows($result);
for ($i= 0; $i<$rows; $i++)
{
$tariffs[$i] = mysql_fetch_assoc($result[$i]);
}
我收到一条错误消息:
警告:mysql_fetch_assoc()期望参数1为资源,在第58行的/usr/local/www/apache22/data/quote/index.php中给出null
答案 0 :(得分:1)
是的,请阅读mysql_fetch_assoc()
上的文档。
更好的结构可能是:
while($row = mysql_fetch_assoc($result)) {
// Do stuff with $row
}
详细说明:$result
不包含任何数据。它是一个“资源”句柄,指向MySQL创建的结果集。要访问结果集的数据,请使用mysql_fetch_*
并将资源句柄传递给它。每次调用fetch
函数时,内部指针都会递增一行。因此,每次MySQL都会获得新数据,直到MySQL到达结果的末尾,此时您将获得FALSE。这就是while()
循环工作的原因。
答案 1 :(得分:1)
没有"mysql object"
之类的东西
您的$db
对象属于某个用户定义的类,并且没有必要向任何人询问此类的行为。
假设query()
方法仅使用普通的mysql_query()函数调用,它确实返回resource
,而不是对象。
如果您有一个奇怪的想法,即使用某个类来运行查询,那么其余的API函数
$tariffs = array();
$result = $db->query("SELECT * FROM `networktariff`");
while ($row = mysql_fetch_assoc($result) {
$tariffs[] = $row;
}
我不知道为什么你的类没有一些辅助函数来同时获取整个数据,比如
$tariffs = $db->query2arr("SELECT * FROM `networktariff`");
答案 2 :(得分:1)
打印$result
因为$db->query
不是标准的php函数,它可能会返回结果集数组。
尝试将$db->query
替换为mysql_query