2014-09-29 177 views
1

我想使一個工作登錄頁面,我想跟蹤用戶的成功和不成功的登錄。php更新SQL語句不起作用

我試圖在PHP與更新語句來做到這一點:

 $updateSQL="UPDATE login SET successfulLogins = IFNULL(successfulLogins, 0) + 1 
    WHERE username ='". $user ."'"; 
    $updateStmnt=$dbcon->prepare($updateSQL); 
    $updateStmnt->execute(); 

這給我的錯誤:致命錯誤:調用一個成員函數的execute()一個非對象

我試過手動在數據庫中使用SQL進入更新語句,它工作得很好,所以這個問題是值得做的PHP ..我認爲

感謝

編輯:我在代碼dbcon早些時候關閉固定這個問題,但現在我有這個代碼相同的問題:

$isError=true; 
    $errorMessage.="Username or password is incorrect<br />"; 

    $updateSQL="UPDATE login SET unsuccessfulLogins = IFNULL(unsuccessfulLogins, 0) + 1 
    WHERE username ='". $user ."'"; 
    $updateStmnt=$dbcon->prepare($updateSQL); 
    $updateStmnt->execute(); 

現在我越來越:

警告:mysqli的準備::():無法獲取的mysqli 致命錯誤:調用一個成員函數的execute()一個非對象

+1

'print $ updateSQL'的輸出是什麼? – FuzzyTree 2014-09-29 20:17:27

+0

你如何實例化$ dbcon?你可以添加更多的信息嗎? – 2014-09-29 20:21:23

+0

嘗試在創建連接時傳遞'PDO :: ERRMODE_EXCEPTION'作爲選項,並查看是否有任何異常被拋出以及它們在說什麼。 – 2014-09-29 20:22:16

回答

0

問題修復。這只是一個問題,不能在正確的地方關閉$ dbcon和$ stmnt ......我敢肯定,如果我提供了更多的代碼,任何人都可以告訴我這一點。

下次我會發布更多我的代碼。我是這個網站的新手!

謝謝!

0
$updateSQL = "UPDATE login SET successfulLogins = IFNULL(successfulLogins, 0) + 1 WHERE username ='". $user ."'"; 
// check your function returns 
if(! $updateStmnt = $dbcon->prepare($updateSQL)) { 
    // check for error information if an error occurred 
    die(print_r($dbcon->errorInfo())); 
} 
// second verse, same as the first 
if(! $updateStmnt->execute()) { 
    die(print_r($updateStmnt->errorInfo())); 
} 

基本上你prepare()失敗的原因之一或其他和,因爲你既沒有檢查你函數返回也不餵養PDO PDO::ERRMODE_EXCEPTION國旗,你的腳本只是卡車,直到它遇到第二個錯誤,實際上死亡。