首先,我使用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中给出布尔值。为什么会造成这种情况?
答案 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,请花时间学习PDO
或mysqli
数据库扩展。 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