可能重复:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select
我有以下代码
$result = mysql_query("SELECT * FROM members WHERE group = '$groupid'");
while($row = mysql_fetch_array($result))
{
echo $row['name'];
}
我希望回应某个组中的所有用户,但是我收到错误 “警告:mysql_fetch_array()要求参数1为资源,布尔值在第11行的C:\ Program Files \ wamp \ www \ state_ecotracker \ group.php中给出”
我不知道该怎么做。
答案 0 :(得分:3)
您的PHP代码是正确的。
GROUP
是MySQL中的保留字,因为它对应GROUP BY
个查询的SELECT
子句。
您不应将其用作列名。更改您的表格以致电group
其他内容。
如果由于一些稍微荒谬的原因(我不认识你的老板)你不能这样做,那么你必须在每个使用它的SQL查询中将该列名用反引号括起来。
$result = mysql_query("SELECT * FROM members WHERE `group` = '$groupid'");
答案 1 :(得分:0)
更改
$result = mysql_query("SELECT * FROM members WHERE group = '$groupid'");`
到
$result = mysql_query("SELECT * FROM members WHERE group = '$groupid'") or die(mysql_error());
一旦你确定你的查询应该正常工作,你就可以看到MySQL给你带来了什么错误信息。
值得注意的是,如果你真的想要使用那些MySQL PHP函数而不是像PDO那样的东西,那么理想情况下你应该使用mysql_fetch_assoc
而不是mysql_fetch_array
。
答案 2 :(得分:0)
使用mysql保留字作为字段名时,将它们包含在`:
中$result = mysql_query("SELECT * FROM members WHERE `group` = '$groupid'");
或重命名字段名称。
答案 3 :(得分:0)
首先,你应该清理你的输入:
$groupId = (int)$groupId; // cast to integer (I suppose because of the Id)
$result = mysql_query('SELECT * FROM members WHERE `group` = ' . $groupId);
// use backticks because GROUP is a reserved word.
while ($row = mysql_fetch_array($result)) {
echo $row['name'];
}
您可以使用mysql_error()
检查导致查询错误的原因。