我在嘗試讓用戶使用電子郵件或用戶名登錄。目前只有用戶名被接受。我的工作SQL是這樣的:用戶名或電子郵件地址登錄
$sql = "SELECT * FROM customers WHERE login = '".$username."' AND password = '".$password."'";
信息:
$username
有$_POST['username']
$password
值有md5($_POST['password'])
價值現在我想將其擴展到客戶可以在他的個人資料中輸入的電子郵件地址。我的SQL是這樣的:
$sql = "SELECT * FROM customers WHERE (login = '".$username."' OR email = '".$username."') AND password = '".$password."'";
我會檢查這個SQL有:
$result = mysql_query($sql);
mysql_num_rows($result)
但此刻它不工作。如果我在我的SQL中使用OR
,則mysql_num_rows
返回0
。可能是什麼問題呢?還是有另一種更好的方式來實現這一目標?
你的代碼很好,所以別的是錯的。你需要使用phpMyAdmin或者直接在數據庫上運行你的查詢來確定是什麼。同樣不要忘記檢查mysql_query調用的成功結果,並運行mysql_error來確定是否存在問題。 – 2013-05-08 09:12:47
所有'mysql_'函數都被棄用。此外,您的代碼可用於[SQL注入](http://xkcd.com/327/)。而且,md5密碼只比使用純文本存儲要好一些。 – Arjan 2013-05-08 09:13:21
「不起作用」是什麼意思?提供更多細節。另外,當遇到查詢問題時,總是使用'echo $ your_query'來確切地知道發送到數據庫的內容。 – Jocelyn 2013-05-08 09:14:21