我似乎遇到了mysql_fetch_array
函数报告Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given
的问题,即使我传递的参数是resource
。
我理解不推荐使用mysql_*
函数,并且应该使用mysqli
甚至更好的预处理语句来完成数据库交互,但是我无法更改用于与数据库交互的方法在这种情况下,因为它不是我有权执行此操作的软件。
结构如下:
$sql; //contains the query
if(!$result = mysql_query($sql)) {
//report error
} else {
if(mysql_num_rows($result) > 0) {
while($instance = mysql_fetch_array($result)) {
//runs once, even though there are 3 results.
}
} else {
//no rows
}
}
警告在行while($instance = mysql_fetch_array($result)) {
上发出,表示我已将布尔值传递给函数。
当我在var_dump
之前的行$result
上while($instance = mysql_fetch_array($result)) {
时,我收到了输出:
resource(22) of type (mysql result)
当我手动运行$sql
中生成的查询时,我得到3个结果。
我很难找到解释为什么我收到这个警告,并且循环只执行一次。
同样,我了解不推荐使用mysql_
,因为它不安全。不推荐使用,并且代码中存在某些不正确的事情,例如意外分配(在这种情况下显然是故意的),但无论如何,代码仍应正确执行。
答案 0 :(得分:3)
鉴于你的while
循环"运行一次,即使有3个结果",我也会在黑暗中拍摄并说你正在使用{{ 1}}错误地在循环内容中。