可能重复:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select
当我尝试将输出排序到DESC时,我收到此错误:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in
这是我的专栏:
$queryForWall = mysql_query("SELECT * FROM users_wall WHERE uID = '$showU[id]' DESC");
while($displayWall = mysql_fetch_array($queryForWall)){
正如您所见,我在那里添加了DESC,但我一直收到错误。
答案 0 :(得分:4)
DESC本身无效。
你需要
ORDER BY <some column or expression> DESC
更一般地说,您应该设法告诉SQL查询何时出错。
也许是这样的:
<?PHP
$result = mysql_query('<some sql query>');
if (! $result){
$error = mysql_error();
//do something with $error, like logging it, using it with trigger_error, etc
}
while($row = mysql_fetch_array($result)){
// process results normally
}
答案 1 :(得分:2)
你需要一个ORDER BY。
SELECT * FROM users_wall WHERE uID = '$showU[id]' ORDER BY uID DESC
查询导致错误,这意味着$ queryForWall == false。这就是为什么php警告说你传递一个布尔值作为你的参数(因为你是)。
答案 2 :(得分:1)
已发布的答案是正确的。但是,我想补充一点。您收到了原始错误消息,因为您的SQL很糟糕,mysql_query
失败了。如果您查看PHP文档,您会看到mysql_query
在出错时返回FALSE。
在尝试循环结果集之前,应始终检查SQL查询的结果,如下所示:
$queryForWall = mysql_query("SELECT * FROM users_wall WHERE uID = '$showU[id]' ORDER BY uID DESC");
if ($queryForWall) {
while($displayWall = mysql_fetch_array($queryForWall)){
}
}
答案 3 :(得分:0)
您尝试使用DESC的方式表明您正在尝试订购SELECT查询的结果。为此,您需要使用ORDER BY。请参阅:http://dev.mysql.com/doc/refman/5.4/en/select.html
答案 4 :(得分:0)
如果您尝试订购结果,则需要使用ORDER BY子句。
例如:
SELECT * FROM users_wall WHERE ... ORDER BY date_added DESC
查看完整的SELECT syntax以获取更多信息。
答案 5 :(得分:0)
SELECT * FROM users_wall WHERE uID = '$showU[id]' ORDER BY uID DESC
您需要通过降序来指定您要订购的列。