2012-12-02 2 views
3

안녕하세요,이 성가신 문제를 해결하기 위해 궁금한 분들이 계십니다. 내 발언을 듣는다.경고 : mysql_result() : 제공된 인수가 4 행의 (...)에서 유효한 MySQL 결과 리소스가 아닙니다.

나는 내 오류와 비슷한 다른 질문을했지만 지금까지 해결할 수 없었다.

도움을 주시면 감사하겠습니다. :)

<?php 
function user_exists ($username) { 
$username = sanitize($username); 
return (mysql_result(mysql_query("SELECT COUNT(user_id) FROM users WHERE username = $username"), 0) == 1) ? true : false; 
} 
?> 
+0

를 처리 할 수 ​​

if(!$result) die("SELECT failed: ".mysql_error()); 

또는 이러한 아이디어 :

$query="SELECT COUNT(user_id) FROM users WHERE username = ".$username; $result = mysql_query($query); 

유 오류의 경우에는 무슨 일이 일어나고 있는지 확인하려면 다음을 사용할 수 있습니다 이것은 어떤 행도 반환하지 않기 때문입니다. – user982270

+0

'sanitize ($ username)'이 무엇을하는지 보려면'echo'를 시도하십시오. – mgraph

답변

3

을 확인해야합니다. mysql_query은 0부터 n 개의 행을 반환하고 오류가 발생하면 오류를 반환합니다. 따라서 리소스은 오류가없는 쿼리에서만 유효합니다. 이것은 다음과 같은 상황을 처리하는 데 사용될 수 있습니다.

먼저 쿼리를 빌드하고 실행 한 다음 리소스을 처리하십시오. 내가 잘못 본게 아니라면 문제를

if (!$result=mysql_query($query)) { 
     return false; // or similar operation 
    } 

    if (mysql_num_rows($result)!=1){ 
     return false; 
    }else{ 
     return true; 
    } 
0

mysql_query이 어떤 이유로 실패하면 false를 반환 할 때 이런 일이 발생할 수 있습니다. 그래서 당신은 당신은 그 오류 또는 특별한 경우를 처리하기 위해 좀 더 라인 코드를 분리해야 여러 개의 문으로이 분할 및 반환 값

$sql = "SELECT COUNT(user_id) FROM users WHERE username = $username"; 
$result = mysql_query($sql); 
if ($result === false) { 
    // error handling 
    return false; 
} 

return (mysql_result($result, 0) == 1) ? true : false; 
+0

을 찾았습니다! 나는 필드 이름에서 작은 인용문을 꺼냈다. 그래서 대신 : return (mysql_result ("SELECT COUNT ('user_id') FROM 'users'WHERE 'username'= '$ username'"), 0) == 1)? 허위 사실; 내가 썼습니다 -------> return (mysql_result ("SELECT COUNT (user_id) FROM users where username = '$ username'"), 0) == 1)? 허위 사실; – user1871201

+0

@ user1871201 이것이 문제를 해결 한 경우 [내 대답 수락] (http://meta.stackexchange.com/a/5235)을 고려하십시오. 고맙습니다. –

관련 문제