为什么我得到'mysql_num_rows()期望参数1是资源,给出'这个警告的字符串?

时间:2015-11-03 14:46:30

标签: php mysql

警告:mysql_num_rows()要求参数1为资源,字符串在第34行的C:\ xampp \ htdocs \ membership \ register.php中给出 警告:mysql_num_rows()期望参数1是资源,第37行的C:\ xampp \ htdocs \ membership \ register.php中给出的字符串 COde:

第33行:$ user_query =“SELECT username FROM members WHERE username ='$ username'LIMIT 1”;

第34行:$ count_username = mysql_num_rows($ user_query);

第36行:$ email_query =“SELECT FROM FROM FROM WHERE email ='$ email'LIMIT 1”;

第37行:$ count_email = mysql_num_rows($ email_query);

if($ user_query> 0){

$ message =“您的用户名已在使用中”;

}否则if($ email_query> 0){

$ message =“您的电子邮件已在使用中”; }

2 个答案:

答案 0 :(得分:2)

因为它需要一个资源,而不是像你一样传入它的字符串。 您必须在尝试获取行之前执行SQL查询:

$user_query = "SELECT username FROM members WHERE username ='$username' LIMIT 1";

$result = mysql_query($user_query);

$count_username = mysql_num_rows($result);

此外,不推荐使用所有mysql_*函数。 使用PDOhttp://php.net/manual/en/book.pdo.php)或MySQLIhttp://php.net/manual/en/book.mysqli.php

目前,您的查询也很可能容易受到SQL注入(https://en.wikipedia.org/wiki/SQL_injection),用户输入的转义字符串或使用预处理语句来避免这种情况。

答案 1 :(得分:0)

因为您没有运行查询。您需要使用以下内容:

$user_query = "SELECT username FROM members WHERE username ='$username' LIMIT 1"
$result = mysqli_query($conn, $user_query); //NOTE MYSQLI, not MYSQL!
$count_username = mysql_num_rows($conn, $result);

如上所述,我使用的是mysqli,而不是mysql。您应该停止使用mysql,因为它已被弃用。 Mysqli非常相似,几乎完全相同。