2013-02-21 2 views
0

안녕하세요, mysql 함수를 mysqli 버전으로 변환하고 싶습니다. 이 함수는 사용자 존재 여부를 확인하기위한 것입니다. 그래서 나는 새로운 기능과 심지어는 mysqli. 그게 왜 내가 변형하는 동안 문제가있어.mysql에서 mysqli로 함수를 변환하는 방법

MySQL의 버전입니다 : 내가 생각

function a($uname){ 
    return (mysql_result(mysql_query("SELECT COUNT (`a`) FROM `table_1` WHERE `a`='$uname'"), 0) == 1) ? true : false; 
} 

mysqli 버전은 다음과 같습니다

function a($uname){ 
     return (mysqli_num_rows(mysqli->query("SELECT COUNT (`a`) FROM `table_1` WHERE `a`='$uname'"), 0) == 1) ? true : false; 
    } 

난 더 이상 아무 mysql_result이 없다는 것을 알고있다. 나는 mysqli_num_rows를 사용하기로 결정했다. 하지만이 기능은 작동하지 않으며 나는 이유가 없습니다. error_reporting이 활성화되어 있지만 페이지를 호출 할 때 오류 메시지가없는 빈 페이지가 표시됩니다.

그래서 나를 도울 수있는 누군가가 있다면 나는 정말로 감사 할 것입니다.

감사합니다. 실제로, 다른 모든 쿼리 (성공하는 경우)에 대한 실패한 쿼리에 대한 '거짓'과 '진실'어떤 결과를 반환 mysqli->query 반환하거나 쿼리에 대한 mysqli_result 개체, 상기 documentation에서 자유롭게

답변

0

.

결과를 더 철저하게 검사하지 않으면 쿼리 결과에 대해 알 수 없습니다.

이 같은 것을보십시오 : (.이 연결이 성공적으로 설립되었습니다, 그리고 $ uName의 제대로 된 탈출했다고 가정) I가 'COUNT'에서 쿼리 매개 변수를 변경

function a($uname) { 
    $found = false; 
    $result = mysqli->query("SELECT `a` FROM `table_1` WHERE `a`='$uname'"); 
    if($result) { 
     //We used a 'SELECT' query and the query was successful. That means, we now have a mysqli_result object. 
     $found = ($result->num_rows == 1); //Determines, if something was actually found or not. 
     $result->close(); //Frees some ressources. Not necessary, but doesn't hurt either. 
    } else { //The query failed, as such we have nothing to evaluate. 
     die("Queryerror: ".mysqli->error); 
    } 
    return $found; 
} 

'A' 왜냐하면 실제 카운트가 '0'이라 할지라도 'num_rows'는 항상 1을 반환하기 때문입니다. 이렇게하면 일치하는 행의 수를 반환합니다. 기본적으로 '일치하지 않음'또는 '일치'에 대해 '0'을 반환합니다.

+0

다른 사람이 내 답변에 투표 할 때 심각하게 싫지만 누가 그 이유를 왜 떨어 뜨 렸는지에 관해서는 아무런 이유도 남기지 않았습니다. 내 말은, 그들은 단순한 재미로 그것을하지 않는다는 것인가? –

0

모든 더러운 mysqli 내부를 숨기려면 도우미 함수가 필요합니다.
처럼 safemysql입니다. 그것은 또한 mysql_result를 모방 할 수 있습니다 :

function a($uname){ 
    global $db; // with mysqi you have to connect once and then use this connection 
    return (bool)$db->getOne("SELECT COUNT (1) FROM table_1 WHERE a=?s"), $uname); 
} 

그리고 유사한 문제가 수십 개를 풀 수 있습니다.

관련 문제