MySQL(已弃用)mysql_num_row()错误

时间:2016-10-18 09:18:47

标签: php mysql

首先,我使用MySQL 而不是 MySQLi。我将在不久的将来升级,但就目前而言,我仍然坚持使用当前的代码:

<?php
$dbusername = "root";
$dbpassword = "pass123";
$db = "login";
$conn = @mysql_connect("localhost:3306", $dbusername, $dbpassword);
mysql_select_db($db);

$userid = $_POST["userid"];
$userpass = $_POST["userpass"];

$sql = mysql_query("SELECT password FROM users WHERE username = {$userid}");
echo $sql;

if(mysql_num_rows($sql) >= 1){
    //user not found
    echo "Found user login!";
} else {
    //user found
    echo "Could not find user";

}

mysql_close($conn);
?>

并且它一直给我错误&#34;警告:mysql_num_rows()期望参数1是资源,在第19行和第34行的C:\ wamp64 \ www \ login.php中给出布尔值。为什么会造成这种情况?

2 个答案:

答案 0 :(得分:2)

此查询有错误

$sql = mysql_query("SELECT password FROM users WHERE username = {$userid}");

应该是

$sql = mysql_query("SELECT password FROM users WHERE username = '{$userid}'");

由于username几乎肯定是数据库中的文本数据类型

  

每次使用the mysql_    新代码中的数据库扩展     a Kitten is strangled somewhere in the world 它已被弃用,已经存在多年,并且在PHP7中一直存在。   如果您只是学习PHP,请花时间学习PDOmysqli数据库扩展。   Start here   因为该列几乎肯定是字符串数据类型

答案 1 :(得分:0)

$sql中使用mysql_num_rows($sql)作为资源之前,请检查其值是否为FALSE:mysql_query return values

$sql = mysql_query("SELECT password FROM users WHERE username = {$userid}");
if ($sql == FALSE) {
    echo "an error occured in your query";
    die();
}

if(mysql_num_rows($sql) >= 1){
    //user not found
    echo "Found user login!";
} else {
    //user found
    echo "Could not find user";

}

正如@RiggsFolly在评论中建议的那样,转到PDO或mysqli