我正在處理我的第一個登錄腳本。我一直在關注一本書中的例子,但這是我陷入困境的地方。我想用戶登錄是一個電子郵件地址,但是當我點擊提交時,我會得到這個錯誤。@(或「at sign」)正在結束我的MySQL查詢,導致錯誤
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\mysite\index.php on line 19
腳本從書的作品,有沒有錯別字,並從谷歌,我發現如果原始查詢失敗給出的錯誤,所以我決定插入「mysqli_error」檢查什麼是錯的,我得到了這個:
Nah. [email protected] have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@mysite.com AND password = SHA('password')' at line 1
所以,我幾乎肯定@符號結束我的查詢提前。我有trim和mysql_real_escape_string作爲清理字符串的方式,但除此之外我什麼都沒有。我一直在谷歌搜索了一段時間,我找不到或弄清楚如何爲@(「at sign」)或某種工作制定一個例外。
我不希望這個問題太長或太複雜,但如果需要,我可以提供更多的代碼。
謝謝!
編輯:以下是縮小解決方案的完整代碼。
if (isset($_POST['submit'])) {
$loginEmail = mysqli_real_escape_string($dbc, trim($_POST['loginEmail']));
$loginPassword = mysqli_real_escape_string($dbc, trim($_POST['loginPassword']));
$query = "SELECT user_id, username FROM user_db WHERE email = $loginEmail AND password = SHA('$loginPassword')";
$loginData = mysqli_query($dbc, $query);
if (mysqli_num_rows($loginData) == 1) {
echo 'You win!';
}
else {
$error = mysqli_error($dbc);
echo 'Nah. ' . $loginEmail . $error;
}
}
你周圍的電子郵件地址與您的查詢報價?順便說一句:顯示您的查詢可以真正幫助識別問題。 – Veger 2010-07-14 18:57:48