通过PHP回应MySQL数据库中的用户

时间:2011-02-06 23:49:05

标签: php sql mysql database

  

可能重复:
  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中给出”

我不知道该怎么做。

4 个答案:

答案 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()检查导致查询错误的原因。