2012-05-26 3 views
1

가능한 중복 2 :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result

내가 검색을 한 적이 특히 나에게 도움이 될 수 아무것도 찾을 수 없습니다.

나는 당신이 도울 수 있기를 바랬습니다.

내가

내가되게하고 (= 유형 = 녹색에 예)이 개 기준을 충족하는 항목을 테이블을 검색하는 MySQL의 쿼리를 실행하고 싶습니다 : 경고 :로 MYSQL_ASSOC를() : 공급 인수는

`$green = "SELECT * FROM homepage_vars WHERE type = 'green' AND on = 'yes'"; 
$green = mysql_query($green); 
$green = mysql_fetch_array($green);` 
+1

mysql_query ($ green)를 실행 한 후 mysql_error ($ green)를 인쇄 해보십시오. 그것은 당신이 무엇이 잘못되었는지를 이해하는 데 도움이 될 것입니다. 또한 $ green를 세 가지 다른 것으로 동일하게 만드는 것은 아마도 당신이 장기적으로 혼란을 야기 할 수 있습니다. – qwerty9967

답변

7

ONMySQL reserved keyword이다 여기선

라인 36 /link/to/my/file.php 유효한 MySQL의 결과 리소스 코드 추출물 (선 36)이다. 당신이 열 또는 테이블 식별자로 사용하는 경우에는 역 인용 부호로 묶어야합니다 : 쿼리 구문이 수정되면

SELECT * FROM homepage_vars WHERE type = 'green' AND `on` = 'yes' 

당신은 다음 다른 문제가 있습니다. 변수 $green을 여러 번 덮어 썼습니다. 원래는 쿼리 SQL을 보유했지만 쿼리 결과 리소스에 사용되었습니다. 괜찮아요.하지만 mysql_fetch_array()에 의해 꺼내 진 행을 덮어 쓰면 내용은 배열 또는 FALSE이됩니다. $green이 더 이상 결과 자원이 아니므로 이후에 행을 가져 오려고하면 실패합니다.

행을 페치하기 전에 항상 쿼리 성공 또는 실패 여부를 테스트하십시오. mysql_error()으로 전화하면 MySQL 서버에서보고 한 오류를 확인할 수 있습니다. 근처의 구문이 올바르지 않거나 ' 또는 그와 비슷한 것 같습니다.

$green = "SELECT * FROM homepage_vars WHERE type = 'green' AND on = 'yes'"; 
$query = mysql_query($green); 
if ($query) { 
    // Don't overwrite your query resource! 
    // Use a new variable! 
    $row = mysql_fetch_array($query); 
} 
else { 
    // Failure! 
    echo mysql_error(); 
}