본문 바로가기
MySql

MySQL '경고 : mysql_fetch_array ()는 매개 변수 1이 리소스가 될 것으로 예상하고 부울은 ...에 주어졌지만 내 쿼리는 정확합니다.

by 베이스 공부 2021. 1. 8.
반응형

좋아, 그래서 나는 '왜 mysql_fetch_array와 함께이 경고가 ...'에 대한 질문을 여러 번 받았는지 알고 있습니다. 내 문제는 서버 가이 경고를 뱉어내는 이유가 쿼리 자체 때문이라는 모든 허용 된 답변입니다. 옳지 않다 ... 이것은 나에게 해당되지 않는다.

다음은 아래 코드입니다.

$dbhost = "host";
$dbuser = "user";
$dbpass = "pass";
$dbname= "db";
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname) or die ('<META HTTP-EQUIV="Refresh" CONTENT="0;URL=Failed.php?dberror=1">');    

$token = mysql_escape_string($_GET['token']); 

$query = "SELECT * FROM newuser WHERE token='$token'";
$result = mysql_query($query) or die(mysql_error());

while($row=mysql_fetch_array($result)) {
   do stuff...
}

'while'문 내의 모든 것이 잘 실행되고 있습니다. 검증 할 수있는 DB가 일부 변경됩니다. 더 중요한 것은 쿼리가 오류 세부 정보를 내 보내지 않는다는 것입니다. $ result === false 인 경우 테스트를 시도하고 오류 정보를 요청했지만 아무것도 반환하지 않습니다. 내가 알 수 있듯이 쿼리 문자열은 괜찮고 실패하지 않습니다.

내가 여기서 뭘 잘못하고 있니? PHP가 SQL 문 이외의 While 매개 변수를 좋아하지 않는 다른 이유가 있습니까? (다시 말하지만 나쁘지 않다고 확신합니다)?

또한 mysqli / PDO를 사용해야한다는 것을 알고 있습니다 .... 가까운 장래에이 기능으로 전환 할 계획이지만이 작업을 수행하기 위해 머리카락을 뽑아 내고 있는데 왜 그렇게 될지 모르겠습니다. 티. 이 시점에서 그것은 더 개인적인 것입니다 ...

도움을 주셔서 감사합니다. 추가 정보가 필요하면 알려주세요. (PHP 버전 5.3)

다음은 쿼리 문자열 ($ query)의 에코입니다.

  SELECT * FROM newuser WHERE token='6e194f2db1223015f404e92d35265a1b'

다음은 쿼리 결과 ($ result)의 var_dump입니다 : resource (3) 유형 (mysql 결과)

 

해결 방법

 

$query = "SELECT * FROM newuser WHERE token='$token'";
$result = mysql_query($query) or die(mysql_error());

while($row=mysql_fetch_array($result)) {
   do stuff...
}

die 문이 실행되지 않으면 while 루프에 들어갈 때 $ result 가 정상입니다. 문제는 아마도 루프 내부의 쿼리에도 $ result 를 사용하여 결국 false로 설정된다는 것입니다.

 

참조 페이지 https://stackoverflow.com/questions/15723897

 

 

반응형

댓글