문제 설명
PHP ‑ MySQL 쿼리 문제 (PHP ‑ Mysql query problem)
로그인한 사용자가 인증되었는지 확인하려고 합니다. 그러나 오류가 있습니다.
경고: mysql_fetch_array(): 제공된 인수는 332행의 /home/psmcouk/public_html/colemansystems/verify.php에 유효한 MySQL 결과 리소스가 아닙니다.
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.";
}
이 코드의 문제점을 알 수 없습니다.
감사합니다!
참조 솔루션
방법 1:
You probably have an SQL error. Try
if (!$result) {
echo 'Invalid query: ' . mysql_error() . "\n";
}
방법 2:
All the answers above are lame.
$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.";
}
방법 3:
Try to use:
$result = mysql_query("SELECT * FROM phpbb_members WHERE memberName='$user1'")
or die(mysql_error()); // to get if any error exists
방법 4:
I guess $user should be quoted:
$result = mysql_query("SELECT * FROM phpbb_members WHERE memberName='$user1'");
You can always see whats wrong my placing echo mysql_error();
after the query
방법 5:
As already posted, you just have to put the user name in single quotations marks:
$query = "SELECT * FROM phpbb_members WHERE memberName = '".$user1."'";
Assuming, that the user name column is varchar
. The code you used is only valid if you compare numbers, e.g. integers.
A general remark: Depending on the size of the columns of your database, it might be resonable to select specific rows rather than all using *
. For instance:
$query = "SELCT memberName, valid FROM phpbb_members";
(by ryryan、Luca Matteis、Your Common Sense、Adnan、Silver Light、Julian)