Вывод пользователей в базу данных MySQL через PHP

0

Возможный дубликат:
mysql_fetch_array() ожидает, что параметр 1 будет ресурсом, boolean задан в select

У меня есть следующий код

$result = mysql_query("SELECT * FROM members WHERE group = '$groupid'");

while($row = mysql_fetch_array($result))
{
  echo $row['name'];
}

который я хочу повторить всем пользователям, которые находятся в определенной группе, но я получаю ошибку "Предупреждение: mysql_fetch_array() ожидает параметр 1, чтобы быть ресурсом, логический дан в C:\Program Files\WAMP\WWW\state_ecotracker\group.php в строке 11"

Я не знаю, что делать.

Теги:
database

4 ответа

3
Лучший ответ

Ваш PHP-код правильный.

GROUP является зарезервированным словом в MySQL, так как оно соответствует предложению GROUP BY запросов SELECT.

Вы не должны использовать его как имя столбца. Измените таблицу, чтобы вызвать GROUP что-то еще.

Если вы не можете сделать это по какой-то слегка абсурдной причине (я не знаю вашего босса), вам придется всегда заключать это имя столбца в обратные ссылки в каждом SQL-запросе, который его использует.

$result = mysql_query("SELECT * FROM members WHERE `group` = '$groupid'");
  • 0
    Иисус расстроен. Теперь это работает, так что СПАСИБО!
  • 1
    Вот список слов, которые нельзя использовать в качестве имен столбцов для справки: dev.mysql.com/doc/refman/5.1/en/reserved-words.html
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(), чтобы проверить, что вызывает ошибку с запросом.

0

При использовании зарезервированных слов mysql в качестве имени поля заключите их в `:

$result = mysql_query("SELECT * FROM members WHERE `group` = '$groupid'");

Или переименуйте имя поля.

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.

  • 0
    @ downvoter .. Пожалуйста, дайте мне знать, что случилось.
  • 0
    что будет проблема с mysql_fetch_array ? В любом случае, ваше решение на самом деле не решает проблему, которая использует ключевое слово MySQL в качестве имени поля.
Показать ещё 3 комментария
Сообщество Overcoder
Наверх
Меню