我正在关注这里的教程系列:https://www.youtube.com/watch?feature=player_embedded&v=bribF8a3fgo我正在使用下面的代码,是的,我知道有更好的方法可以做到这一点。虽然我收到了这个错误:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/friends/login.php on line 26
我不知道为什么,我很确定我正在打字,但我不确定。介意看看?感谢。
<html>
<head>
<title>Login - Friend System</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<?php include 'connect.php'; ?>
<?php include 'functions.php'; ?>
<?php include 'header.php'; ?>
<div class="container">
<h3>Login</h3>
<form method="post">
<?php
if (isset($_POST['submit'])) {
$username = $_POST['username'];
$password = $_POST['password'];
if (empty($username) or empty($password)) {
$message = "Fields Empty, Please Recheck";
}else {
$check_login = mysql_query("SELECT id FROM users WHERE username='$username' AND password='" . md5($password) . "'");
if(mysql_num_rows($check_login) == 1) {
$message = "Ok!";
} else {
$message = "Username and/or password incorrect!";
}
}
echo "<div class='box'>" . $message . "</div>";
}
?>
Username: <br/>
<input type="text" name="username" autocomplete="off"/>
<br/><br/>
Password: <br/>
<input type="password" name="password" />
<br/><br/>
<input type="submit" name="submit" value="Register">
</form>
</div>
</body>
</html>
第26行是:
if(mysql_num_rows($check_login) == 1) {
答案 0 :(得分:2)
如果查询失败,它将返回布尔值FALSE
而不是结果集资源。
您应该始终检查返回值是否表示错误,然后以有意义的方式处理错误,例如通过记录错误消息。例如:
if ($check_login === false) {
die("Error in query: ".mysql_error());
}
if (mysql_num_rows($check_login) == 1) { ...
顺便说一下,这个旧的mysql
API is deprecated and should not be used in new PHP code。建议改为使用PDO
或mysqli
。
答案 1 :(得分:0)
$ check_login的上下文不是有效查询。 “SELECT”是正确的术语。只要查询无效,它就会返回该错误。
$check_login = mysql_query("SELECT id FROM users WHERE username='$username' AND password='" . md5($password) . "'");