2015-12-10 105 views
0

我有一個查詢,INSERT是用戶使用預備的Mysql語句進入數據庫。沒有錯誤拋出,但由於某種原因,語句執行後的任何代碼都不會運行。它將運行之前的任何代碼。一切都很好,我不知道可能是什麼原因造成的。代碼如下:Mysql查詢後沒有執行代碼

$SQL = "INSERT INTO `testDb` 
      (`email`, `id`, `created_at`, `password`, `access_token`) 
     VALUES 
      (:email, :id, :currentDate, :password, :token)"; 

$stmt = $DBH->prepare($SQL); 

$insertArray = array(
    ":email"  => "some Email", 
    ":currentDate" => date('Y-m-d H:i:s'), 
    ":id" => "some id", 
    ":password" => "some pass", 
    ":token"  => $access_token 
); 
$stmt->execute($insertArray); 
// All of this following code doesn't execute, 
// including all the other following code after all this code 
$responseData = array(
    "user_id"  => $DBH->lastInsertId(), 
    "access_token" => $access_token, 
    "new_user"  => 1 
); 
print_r($responseData); 
echo 'TESTTTTTT'; 

我的意思是如果沒有代碼執行的是什麼GET的打印出來,或者那是下面這段代碼是沒有聽得到任何執行的功能。但是當$stmt->execute($insertArray);被註釋掉時,下面的所有內容都會被執行。

編輯: 錯誤屬性在文件的開始處設置,並且所有內容都已包裝在try/catch中。這是什麼設置:

error_reporting(E_ALL); 
ini_set('display_errors', '0'); 
ini_set('log_errors','1'); 
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$DBH->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 

試過所有的建議,但沒有任何工作,沒有錯誤被拋出。只有工作的事情被註釋掉這兩條線:

$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$DBH->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 

之後被註釋掉的代碼的其餘部分執行,但現在看來似乎無法從DB獲得任何數據現在,防爆。所有讀取數組即使不應該出現也是空的。

+1

'$ didItWorkOrNot = $ stmt-> execute($ insertArray); echo $ didItWorkOrNot;'執行返回一個布爾值。這可能會有所幫助。 – developerwjk

+1

你在使用PDO嗎? PDO異常是否處於活動狀態?你配置你的PHP服務器,以隱藏錯誤的用戶?檢查你的錯誤日誌文件。 – ZeissS

+0

已經嘗試過這樣的東西,把它放在「if」語句中,但沒有任何迴應。剛剛嘗試了你的話,但沒有出現,只是空白 –

回答

0

試着將上面的所有代碼

error_reporting(-1); 
ini_set('display_errors', 1); 
+0

檢查編輯,嘗試但沒有完全工作 –

0

正如前面建議這兩條線,把在此之前的任何代碼來獲得PDO拋出異常:

$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

然後包裹有問題的代碼與try...catch塊,所以你可以精確定位到底發生了什麼。

+0

檢查編輯,嘗試但沒有完全工作 –