2010-12-02 4 views
0

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

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/psmcouk/public_html/colemansystems/verify.php on line 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."; 

    } 

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

Спасибо!

ответ

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

Большое спасибо! Работал в первый раз! Очень признателен! – ryryan 2010-12-02 11:56:18

1

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

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

Я думаю, $ пользователь должен быть в кавычках:

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

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

2

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

if (!$result) { 
    echo 'Invalid query: ' . mysql_error() . "\n"; 
} 
-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 
... 
1

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

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

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

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

$query = "SELCT memberName, valid FROM phpbb_members"; 
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."; 

    } 

попробовать это.

Смежные вопросы