繁体   English   中英

为什么我收到“mysql_num_rows() 期望参数 1 为资源,给出字符串”这个警告?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM