2012-10-19 12 views
8

अभी भी मेरे सिर को पीडीओ के आसपास लाने की कोशिश कर रहा है।pdo पकड़ और आउटपुट mysql त्रुटियों

मेरे पास एक सम्मिलित कथन है जिसे पीडीओ के साथ निष्पादित किया गया है। महान काम डालें हालांकि अगर कोई त्रुटि है तो मैं इसे उपयोगकर्ता को प्रदर्शित करना चाहता हूं।

मेरे पास नीचे ब्लॉक को पकड़ने का प्रयास है।

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 त्रुटि वापस करना चाहता हूं।

किसी भी सलाह हमेशा की सराहना की।

धन्यवाद, रयान

अद्यतन

नए कोड के रूप में प्रस्तावित जवाब प्रति:

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 की एक वस्तु हो जाएगा, और इसके कई विशेषताओं में से दो में निम्नलिखित प्रदान करने की आवश्यकता है और त्रुटि संदेश। –

उत्तर

16

डिफ़ॉल्ट पीडीओ तक एक राज्य है कि त्रुटियों को प्रदर्शित करेगा में नहीं है। आप mysql त्रुटि कोड होगा आपके DB कनेक्शन

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

अधिक जानकारी देखा जा सकता है Here

+0

धन्यवाद। यदि मैं त्रुटि मोड को 'ERRMODE_WARNING' पर सेट करता हूं तो यह पृष्ठ के शीर्ष पर चेतावनी देता है, मैं इसे चर के मान पर कैसे सेट कर सकता हूं और इसे पृष्ठ पर वापस लौटा सकता हूं। धन्यवाद – Smudger

+2

अपने कैच ब्लॉक में आप बाद में उपयोग के लिए एक अलग चर के लिए $ अपवाद सेट कर सकते हैं। 'पकड़ो (पीडीओएक्सप्शन $ अपवाद) { $ त्रुटि = $ अपवाद-> getMessage(); } // बाद में कोड गूंज "एक त्रुटि हुई है"। $ त्रुटि; ' या कुछ समान। –

संबंधित मुद्दे