2011-06-26 8 views
0

Possible Duplicate:
mysql_num_rows(): supplied argument is not a valid MySQL result resourcePHPのエラー:はmysql_num_rows():指定された引数が有効なMySQLのではありません

のは、私はクラスファイルと呼ばれるユーザー内getbyUsernameと呼ばれる機能があるとしましょう:

public static function getbyUsername($username) { 
    $user = new User(); 
    $query = sprintf('SELECT CLIENT_ID, EMAIL, PASSWORD' . 'FROM %sClients WHERE USERNAME = "%s"', DB_TBL_PREFIX, mysql_real_escape_string($username, $GLOBALS['DB'])); 
    $result = mysql_query($query, $GLOBALS['DB']); 
    if(mysql_num_rows($result)) { 
     $row = mysql_fetch_assoc($result); 
     $user->client_id = $row['CLIENT_ID']; 
     $user->username = $username; 
     $user->password = $row['PASSWORD']; 
    } 
    mysql_free_result($result); 
    return $user; 
} 

をし、私が行きますよユーザーはこの機能

$user = User::getbyUsername($_POST['username']); 
    if($user->userid) { 
     echo 'User Exist!'; 
    } else { 
     echo 'User does not exist'; 
    } 

私はPHPからエラーになっていると私は理由を知らないを使用して存在するかどうかを確認:

mysql_num_rows(): supplied argument is not a valid MySQL result resource in...

mysql_free_result(): supplied argument is not a valid MySQL result resource in....

誰かが私を助けることができますか?

答えて

2

クエリが失敗したように見えるため、mysql_queryfalseを返します。これは有効なMySQL結果リソースではありません。あなたがエラーを実行してmysql_query戻りfalse

'SELECT CLIENT_ID, EMAIL, PASSWORD FROM %sClients WHERE USERNAME = "%s"' 
1

クエリ:フィールド式PASSWORDFROMキーワードの間で不足しているスペースがあるようです。 PHPがその戻り値がMySQLの結果ではないと訴えるのはそのためです。私が見ることができる

一つの問題は、あなたがスペースが不足しているということです。

'SELECT CLIENT_ID, EMAIL, PASSWORD' . 'FROM 

            ^
Missing space here -----------------/ 
0

まだ同じエラーを取得した場合、問題は、テーブルの接頭辞です。 cpanelを使用すると、テーブル接頭辞はusernameと同じです。空のテーブル接頭辞define( 'DB_TBL_PREFIX'、 '');を使用してこの問題を修正できます。