2012-10-19 72 views
8

仍試圖讓我的頭繞過pdo。pdo捕獲並輸出mysql錯誤

我有一個與pdo一起執行的插入語句。插入工程很好,但如果有一個錯誤,我希望它顯示給用戶。

我有下面的try catch塊。

try{ 
     $insertuser = $db->prepare('INSERT INTO `she_she`.`Persons` (`idnumber`,`addedby`,`firstname`, `middlename`, `surname`, `fullname`, `gender`, `birthdate`, `homelanguage`, `department`, `employeetype`, `employeestatus`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)'); 
     $insertuser->execute(array($idnumber,$user,$firstname, $middlename, $surname, $fullname, $gender, $birthdate, $language, $department, $employmenttype, $personstatus)); 
    } 
    catch(PDOException $exception){ 
     return $exception; 
    } 

如果查詢失敗,或者可以說重複的IDNumber,我希望這顯示給用戶。

如果我只是嘗試回顯變量$異常,它不起作用。

我想將mysql錯誤返回給用戶。

任何建議一如既往的讚賞。

感謝, 瑞安

UPDATE

新的代碼按建議的答案:

try{ 
     $insertuser = $db->prepare('INSERT INTO `she_she`.`Persons` (`idnumber`,`addedby`,`firstname`, `middlename`, `surname`, `fullname`, `gender`, `birthdate`, `homelanguage`, `department`, `employeetype`, `employeestatus`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)'); 
     $insertuser->execute(array($idnumber,$user,$firstname, $middlename, $surname, $fullname, $gender, $birthdate, $language, $department, $employmenttype, $personstatus)); 
    } 
    catch(PDOException $exception){ 
     return $exception->getMessage(); 
    } 
echo "exception: ".$exception; 
+1

$例外是類型PDOException的對象,它的兩個多屬性下面將是MySQL錯誤代碼和錯誤信息。 –

回答

16

默認情況下,PDO是不是會顯示錯誤的狀態。您需要提供您的數據庫連接

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

更多信息可以看出Here

+0

謝謝。如果我將錯誤模式設置爲'ERRMODE_WARNING',它將在頁面頂部返回警告,我怎樣才能將它設置爲變量的值並將其返回到我想要在頁面上的位置。謝謝 – Smudger

+2

在您的catch塊中,您可以將$ exception設置爲一個不同的變量以備後用。 (catch)(PDOException $ exception){ $ error = $ exception-> getMessage(); } //以後代碼 回聲「發生錯誤」。 $ error;' 或類似的東西。 –