我有一個查詢,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獲得任何數據現在,防爆。所有讀取數組即使不應該出現也是空的。
'$ didItWorkOrNot = $ stmt-> execute($ insertArray); echo $ didItWorkOrNot;'執行返回一個布爾值。這可能會有所幫助。 – developerwjk
你在使用PDO嗎? PDO異常是否處於活動狀態?你配置你的PHP服務器,以隱藏錯誤的用戶?檢查你的錯誤日誌文件。 – ZeissS
已經嘗試過這樣的東西,把它放在「if」語句中,但沒有任何迴應。剛剛嘗試了你的話,但沒有出現,只是空白 –