我試圖在準備好的語句中使用SELECT COUNT(*)
。帶OR運算符的SELECT count(*)
下面是我的PHP:
if(!($stmt = $link->prepare("SELECT COUNT(*) AS failed FROM LoginAttempts WHERE (email = ? OR IP = ?) AND LastLogin BETWEEN now() and subdate(now(),INTERVAL 5 MINUTE)"))){
}
$stmt->bind_param('ss', $email, $ip);
$stmt->execute();
$stmt->bind_result($failed);
$stmt->close();
我試圖從這個來實現的,是當用戶試圖登錄到他們的帳戶(並提供不正確的登錄信息)的IP,並輸入電子郵件地址記錄在表中。
當試圖嘗試登錄,使用電子郵件或 IP,我算多條記錄如何匹配要麼他們的IP或電子郵件地址。
我遇到的問題是在訪問$failed
時結果是NULL
,即使最近5分鐘內數據庫中有記錄。
我究竟在哪裏出錯?有在我的Apache錯誤日誌中沒有錯誤,或者:
error_reporting(E_ALL);
ini_set('display_errors',1);
感謝您的時間
編輯:我需要使用$ stmt-> fetch()方法; - 不知道我是如何錯過的。感謝薩蒂的評論!
您需要關閉,如果條件都有很大的幫助之前'$ stmt-> close()方法;當你在數據庫中運行' – Saty
這是否查詢工作?我通常從db開始,一旦我得到了可靠的查詢,然後將其轉換爲預準備語句語法。這可以讓我從連接到數據庫的錯誤中分離錯誤。 – Gus
看看這個if(!($ stmt = $ link-> prepare(「SELECT COUNT(*)AS FROM LoginAttempts WHERE(email =?OR IP =?)AND LastLogin BETWEEN now()and subdate(now() ,INTERVAL 5 MINUTE)「))){ - { }' - 進一步向下移動右大括號。 –