可能重复:
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结果资源。
有人可以帮助我吗?
答案 0 :(得分:2)
您的查询似乎失败,因此mysql_query
返回 false ,它不是有效的MySQL结果资源。字段表达式PASSWORD
和FROM
关键字之间似乎缺少空格:
'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','')来解决此问题;