PHP错误:mysql_num_rows():提供的参数不是有效的MySQL

时间:2011-06-26 12:25:32

标签: php mysql class

  

可能重复:
  mysql_num_rows(): supplied argument is not a valid MySQL result resource

假设我在名为User:

的类文件中有一个名为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():提供的参数不是...中的有效MySQL结果资源

     

mysql_free_result():提供的参数不是......中的有效MySQL结果资源。

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

您的查询似乎失败,因此mysql_query返回 false ,它不是有效的MySQL结果资源。字段表达式PASSWORDFROM关键字之间似乎缺少空格:

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

答案 1 :(得分:1)

您执行的查询出错,mysql_query返回false。这就是PHP抱怨其返回值不是MySQL结果的原因。

我能看到的一个问题是你错过了一个空间:

'SELECT CLIENT_ID, EMAIL, PASSWORD' . 'FROM 

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

答案 2 :(得分:0)

如果您仍然得到相同的错误,那么问题出现在表前缀上。如果使用cpanel,表前缀与用户名相同。您可以通过使用空表前缀,define('DB_TBL_PREFIX','')来解决此问题;