[英]Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in
[英]Why I'm getting 'mysql_num_rows() expects parameter 1 to be resource, string given' this warning?
警告:mysql_num_rows() 期望参数 1 是资源,字符串在 C:\\xampp\\htdocs\\membership\\register.php 第 34 行中给出
警告:mysql_num_rows() 期望参数 1 是资源,字符串在 C:\\xampp\\htdocs\\membership\\register.php 第 37 行代码中给出:
第 33 行:
$user_query = "SELECT username FROM members WHERE username ='$username' LIMIT 1";
第 34 行:
$count_username = mysql_num_rows($user_query);
第 36 行:
$email_query = "SELECT email FROM members WHERE email ='$email' LIMIT 1";
第 37 行:
$count_email = mysql_num_rows($email_query);
if ($user_query>0){
$message = "Your username already in use";
} elseif($email_query>0) {
$message = "Your email already in use";
}
因为它需要一个资源,而不是像您传递给它的字符串。 在尝试获取行之前,您必须执行 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 )、用户输入的转义字符串或使用准备好的语句来避免这种情况的影响。
因为您没有运行查询。 您需要使用以下内容:
$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 非常相似,几乎与您正在做的事情相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.