PHP - Mysql запрос проблема

0

Я пытаюсь проверить, проверен ли зарегистрированный пользователь. Но есть ошибка:

Предупреждение: mysql_fetch_array(): поставляется аргумент не является допустимым результатом MySQL ресурс в /home/psmcouk/public _html/colemansystems/verify.php на линии 332

Вот код PHP:

$user1 = $_SESSION['usr'];

$result = mysql_query("SELECT * FROM phpbb_members WHERE memberName=$user1");

while($row = mysql_fetch_array($result)) //LINE 332
  {
  $valid = $row['valid'];

  }
  if($valid == "1"){
      echo "$user1, you're account is currently verified.";

  }

Я просто не вижу, что не так с этим кодом.

Спасибо!

Теги:

7 ответов

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

Все приведенные выше ответы являются хромыми.

$user1 = mysql_real_escape_string($_SESSION['usr']);
$query = "SELECT valid FROM phpbb_members WHERE memberName='$user1' and valid=1";
$result = mysql_query($query) or trigger_error(mysql_error()." in ".$query);
$valid = mysql_num_rows($result);
if($valid){
  echo "$user1, your account is currently verified.";
}
  • 0
    Большое спасибо! Работал впервые! Очень признателен!
2

Вероятно, у вас есть ошибка SQL. Попробуйте

if (!$result) {
    echo 'Invalid query: ' . mysql_error() . "\n";
}
1

Как уже было опубликовано, вам просто нужно поместить имя пользователя в одинарные кавычки:

$query = "SELECT * FROM phpbb_members WHERE memberName = '".$user1."'";

Предполагая, что столбец имени пользователя varchar. Используемый вами код действителен только в том случае, если вы сравниваете числа, например. целые числа.

Общее замечание. В зависимости от размера столбцов вашей базы данных, возможно, было бы удобно выбирать определенные строки, а не все, используя *. Например:

$query = "SELCT memberName, valid FROM phpbb_members";
1

Попробуйте использовать:

$result = mysql_query("SELECT * FROM phpbb_members WHERE memberName='$user1'") 
          or die(mysql_error()); // to get if any error exists
1
$user1 = $_SESSION['usr'];

$result = mysql_query("SELECT * FROM phpbb_members WHERE memberName=$user1");

while($row = mysql_fetch_field($result)) //LINE 332
  {
  $valid = $row['valid'];

  }
  if($valid == "1"){
      echo "$user1, you're account is currently verified.";

  }

попробуйте это.

1

Я предполагаю, что $user следует указывать:

$result = mysql_query("SELECT * FROM phpbb_members WHERE memberName='$user1'");

Вы всегда можете увидеть, что не так, как я разместил echo mysql_error(); после запроса

-1

Вы должны проверить результат mysql_query перед его использованием, если следовать примерам с php.net:

$result = mysql_query("SELECT * FROM phpbb_members WHERE memberName=$user1");
if (!$result) {
  die('Request problem : ' . msql_error());
}

while($row = mysql_fetch_array($result)) //LINE 332
...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню