Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C ...
这是代码
function db_result_to_array($result) {
$res_array = array();
for ($count=0; $row = mysql_fetch_array($result); $count++) {
$res_array[$count] = $row;
}
return $res_array;
}
所以,错误在这一行
for ($count=0; $row = mysql_fetch_array($result); $count++)
我试过
mysql_fetch_object()
mysql_fetch_assoc()
mysql_fetch_row()
并且无法正常工作
我试过
mysql_fetch_array($result, MYSQL_ASSOC)
mysql_fetch_array($result, MYSQL_NUM)
mysql_fetch_array($result, MYSQL_BOTH)
它不起作用。 你能帮我解决这个问题吗?
答案 0 :(得分:2)
你应该运行这样的代码:
$result = mysql_query(...) or die(mysql_error());
$data = array();
while($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
几乎不需要运行普通的for()循环来从结果集中获取行。它使用while循环更可靠/更容易。当没有更多的数据需要获取时它会自动终止,并且你不会遇到你的情况,你的循环在fetch的末尾运行。
答案 1 :(得分:1)
$result
应该是sql语句的结果,并且返回记录行的查询例如SELECT * From someTable
并且查询必须是语法正确才能获得有效结果
$sql = 'SELECT * FROM users'; //make sure no syntax error from generated query
$result = mysql_query($sql); //this should be a valid result [resouce id]
$recordsArray = db_result_to_array($result); //call your function with the valid result. boolean cannot be passed
同时按照建议将for
更改为while
。
Use of mysql_ extension is discouraged
不鼓励使用此扩展程序。相反,MySQLi或PDO_MySQL 应该使用扩展...此功能的替代方案包括:
mysqli_query()
PDO ::查询()
从上面发布的MySQL链接
对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他语句返回 resultset,mysql_query()在成功时返回资源,或者返回FALSE 错误。
对于其他类型的SQL语句,INSERT,UPDATE,DELETE,DROP等, mysql_query()成功时返回TRUE,错误时返回FALSE。
因此,如果SELECT, SHOW, DESCRIBE, EXPLAIN
成功执行,您将获得有效资源,如果没有,则获得布尔值(FALSE)。
对于INSERT, UPDATE, DELETE, DROP
,您将获得TRUE(成功)或FALSE(错误)
答案 2 :(得分:-1)
看看在调用函数之前如何分配$ result变量。分配此$结果时使用的查询是什么?