php
  • mysql
  • 2011-08-08 2 views 0 likes 
    0

    select에 하나의 행이 필요한 경우 true로 설정해야합니다. 그러나 나는 심지어 행의 수를 울릴 수 없다.mysql_num_rows() : 제공된 인수가 유효한 MySQL 결과 리소스가 아닙니다.

    내가 그것을 어떻게 할 수 mysql_num_rows(): supplied argument is not a valid MySQL result resource

    얻을?

    $result="SELECT * FROM Users WHERE User = '$user' AND Password = '$hash' LIMIT 1"; 
    $num_rows = mysql_num_rows(resource $result); 
    echo $num_rows; 
    
    +0

    mysql_ *을 사용하면 안됩니다. 더 이상 사용되지 않습니다. –

    +1

    @Rikudo 기술적으로 더 이상 사용되지 않을 것이라고 생각하지 않지만 [MySQLi] (http://php.net/mysqli) 또는 [PDO] (http://php.net/pdo)와 같은 더 바람직한 솔루션이 존재합니다. . – Wiseguy

    +0

    PHP에서 공식적으로 비공식적으로 사용되지 않는 항목입니다. –

    답변

    1

    당신은 그 실행에서 어떤 결과를 얻을하기 전에, mysql_query()와 함께, 귀하의 SQL 쿼리를 실행해야합니다.


    그래서, 기본적으로, 당신의 코드는 다음과 같아야합니다

    // This is a QUERY, not a RESULT 
    $query = "SELECT * FROM Users WHERE User = '$user' AND Password = '$hash' LIMIT 1"; 
    
    $result = mysql_query($query); // execute query => get a resource 
    if ($result) { 
        // query has been executed without error 
        $num_rows = mysql_num_rows($result); // Use the result of the query's execution 
        echo $num_rows; 
    } 
    else { 
        // There has been an error ; deal with it 
        // for debugging, displaying the error message is OK : 
        echo mysql_error(); 
    } 
    
    1

    을 당신은 다음 결과 집합의 행 수를 검색 할 수 있습니다 먼저 SQL 쿼리를 실행할 수 있습니다

    $mysql_result = mysql_query($result); // Do this first, then you can 
    $num_rows = mysql_num_rows($mysql_result); 
    
    +1

    그리고 실제로 $ 결과가 $ query – Zak

    +1

    이되도록해야하며 직접적인 mysql 호출을 사용해서는 안되며 PDO – Zak

    0

    보십시오

    $result = mysql_query("SELECT * FROM Users WHERE User = '$user' AND Password = '$hash' LIMIT 1"); 
    

    또한 실행 후 쿼리, 오류가 있는지 확인하십시오. $result은이 경우 리소스가 아닙니다 (실제로는 FALSE입니다). 오류 정보를 검색하려면, mysql_error() 전화 :

    $query = "SELECT * FROM Users WHERE User = '$user' AND Password = '$hash' LIMIT 1"; 
    $result = mysql_query($query); 
    if ($result === FALSE) 
        die("Error in query $query: " . mysql_error()); 
    

    그것은 이러한 오류 처리 루틴이 생산 코드에 그것을하지 할, 그러나, 귀하의 책임입니다,이 데이터베이스의 레이아웃을 전파하는 것처럼. 또한 쿼리에 삽입 된 변수가 올바르게 이스케이프되었는지 확인하십시오 (mysql_real_escape_string() 사용).

    +0

    을 사용해야합니다. 어떻게해야합니까? 결과가 있는지 테스트 할 조건을 만드시겠습니까? – lisovaccaro

    +0

    @Liso 코드 스 니펫에서했던 것처럼 '$ num_rows = mysql_num_rows ($ result);'. –

    1

    여기에 깔끔한 방법

    $st = "SELECT COUNT(1) FoundCount FROM Users WHERE User='$user' AND Password='$hash'"; 
    $result = mysql_query($st); 
    $row = mysql_fetch_assoc($result); 
    $rowfound = $row['FoundCount']; 
    

    그것을 시도 줄 것입니다!

    관련 문제