PHP的登錄頁面,我有這些代碼和它給我一個錯誤 '警告:mysql_num_rows()預計參數1是資源':MySQL和與mysql_num_rows
PHP:
<?php
@error_reporting(0);
@session_start();
@include("sql.php");
$log_error = "";
if(isset($_POST['send'])) {
$user = protect($_POST['username']);
$pass = protect($_POST['password']);
$q = mysql_query("SELECT * FROM login WHERE name = '".$user."' and pass = '".$pass."'",$sqlc);
$count = mysql_num_rows($q);
if($count > 0) {
$_SESSION['username'] == $user;
header('Location: index.php');
$log_error = "0";
} else {
$log_error = "1";
}
}
?>
HTML:
<table border="0">
<form action="" method="post">
<tr>
<td colspan="2" style="width:100%;"><span>Login</span></td>
<tr>
<tr>
<td>Username:</td>
<td><input type="text" name="username" value="" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="password" value="" /></td>
</tr>
<tr>
<td colspan="2" style="width:100%;"><input type="submit" name="send" value="Login" /></td>
</tr>
</form>
</table>
和SQL連接(sql.php):
<?php
$Host = 'localhost';
$User = 'dash_sys1';
$Pass = '123456Ben';
$DB = 'dash_sys1';
$sqlc = mysql_connect($Host,$User,$Pass) or die(mysql_error());
mysql_select_db($DB) or die(mysql_error());
function protect($str) {
return htmlspecialchars(mysql_real_escape_string(trim($str)));
}
?>
它給了我一個錯誤:警告:mysql_num_rows()期望參數1是資源,布爾在第11行給出C:\ wamp \ www \ cms \ admin \ login.php
我做錯了什麼?
這意味着mysql_query失敗。檢查查詢並嘗試添加'或die()'到它的末尾。您也應該遠離已棄用的mysql_ *函數,並切換到PDO或mysqli,因爲mysql_ *函數將在下一版本的PHP中刪除。 – aynber
連接代碼似乎是正確的。必須是你的mysql連接設置不正確。無論如何,我注意到在$ _SESSION ['username'] == $ user;'行中設置會話變量時存在一個錯誤。應該是'$ _SESSION ['username'] = $ user;'。 – Rajesh
@Rajesh - 這不是連接數據庫的問題;這是因爲mysql_query返回了一個布爾值,這通常意味着SQL中存在錯誤。但是OP沒有檢查返回值,或者查看是否有'mysql_error()' – andrewsi