警告: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 =“您的电子邮件已在使用中”; }
答案 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_*
函数。
使用PDO
(http://php.net/manual/en/book.pdo.php)或MySQLI
(http://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非常相似,几乎完全相同。