PHP - MySQL 쿼리 문제 (PHP - Mysql query problem)


문제 설명

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 ryryanLuca MatteisYour Common SenseAdnanSilver LightJulian)

참조 문서

  1. PHP ‑ Mysql query problem (CC BY‑SA 3.0/4.0)

#MySQL #PHP #SQL






관련 질문

MySQL: IN(p1)은 IN(p1, p2, ...)과 다르게 작동합니까? (MySQL: Does IN(p1) function differently to IN(p1, p2, ... )?)

SQL 테이블 카운팅 및 조인 (SQL Table Counting and Joining)

ORA-00979: Oracle에 대한 GROUP BY 표현식이 아니지만 절 차이의 컨텍스트에서 MySQL에 대해서는 유효하지 않습니다. (ORA-00979: not a GROUP BY expression for Oracle but not valid for MySQL in context of clause difference)

PHP에서 카테고리 및 하위 카테고리 목록 검색 (Retrieve Category & Subcategory list in PHP)

R과 반짝이는 다층 테이블을 만드는 방법은 무엇입니까? (How to make multiple layered table form with R and shiny?)

mysql에서 저장 프로시저가 더 효율적입니까? (In mysql, are stored procedures more efficient?)

PHP - MySQL 쿼리 문제 (PHP - Mysql query problem)

데이터베이스 값이 이미 존재하는지 확인하는 방법 (how to check if databases values are already exists)

SQL 테이블에서 누락된 날짜를 채우는 방법 (How to fill the missing date in a sql table)

잘린 잘못된 DOUBLE 값을 수정하는 방법: '정의되지 않음' 오류 (How to fix Truncated incorrect DOUBLE value: 'undefined' error)

반복되는 NotSupportedError: 인증 플러그인 'caching_sha2_password'가 지원되지 않습니다. 이전 솔루션을 시도했지만 소용이 없었습니다. (Repeated NotSupportedError: Authentication plugin 'caching_sha2_password' is not supported tried the previous solutions to no avail)

MySQL (버전 8.0 이하) : 날짜 값을 선택하고 마일스톤 날짜 테이블에서 날짜 행을 반환합니다. (MySQL (version lower then 8.0) : Select where date value and return a row of dates from table of milestone date)







코멘트