2009-12-12 9 views
9

असल में मेरे पास एक तालिका है जिसमें अद्वितीय कॉलम जोड़े गए हैं।कोडइग्निटर - एसक्यूएल त्रुटि पर जारी है?

$this->db->query("INSERT INTO `table` (`col1`, `col2`, `col3`) VALUES (`val1`, `val2`, `val3`)"); 

हर इतनी बार मेरी स्क्रिप्ट एक पंक्ति जो स्तंभों में से एक की विशिष्टता का उल्लंघन होगा डालने की कोशिश करेंगे: मैं एक स्क्रिप्ट है कि इस तरह एक आदेश के साथ तालिका में मूल्यों का एक समूह उदासीनता है। हालांकि, स्क्रिप्ट को डेटाबेस त्रुटि से निरस्त करने के बजाय, मैं इसे जारी रखना चाहता हूं, संभवतः एक छोटा संदेश आउटपुट करना। असल में मैं कोडरिटर के समतुल्य

mysql_query("INSERT blah blah blah") or print("fail"); 

धन्यवाद!
माला

+0

आह जो कुछ भी कोशिश पकड़ ब्लॉक के साथ जवाब का क्या हुआ? – Mala

उत्तर

19

हाँ, मुझे थोड़ी देर भी ले लिया और मुझे से बाहर नरक नाराज:

$db['default']['db_debug'] = FALSE; 

... config/database.php में - त्रुटि पृष्ठ अक्षम करता है।

के बाद एक प्रश्न भाग गया, एक त्रुटि के लिए जाँच करने के लिए इस का उपयोग करें:

if (!empty($this->db->_error_message())) { 
    echo "FAIL"; 
} 
+0

यदि यह खाली नहीं है, तो असफल हो? यह मेरे पीछे पीछे लगता है, या क्या मैं गलत समझता हूं कि खाली() कैसे काम करता है? – Mala

+0

ओह क्षमा करें मुझे शायद टिप्पणी करने से पहले पूरी लाइन पढ़नी चाहिए;) धन्यवाद एक गुच्छा! – Mala

+0

मेरा कोड इस तरह दिखता है: यदि (खाली ($ this-> डीबी -> _ error_message()) \t गूंज "सफल"; अन्य \t गूंज "असफल"; लेकिन पृष्ठ "घातक त्रुटि: लिखने के संदर्भ में विधि वापसी मान का उपयोग नहीं कर सकता" के साथ विफल रहता है ... – Mala

8

मैं जानता हूँ कि आप पहले से ही एक समाधान है, लेकिन सोचा कि यह इस सवाल को देखने के रूप में अच्छी तरह से दूसरों के लिए उपयोगी हो सकता है।

चलो डेटाबेस आप के लिए काम करते हैं:

$this->db->query("INSERT IGNORE INTO `table` (`col1`, `col2`, `col3`) VALUES (`val1`, `val2`, `val3`)"); 

जब आप सम्मिलित ध्यान न दें उपयोग करते हैं, नकली चाबी त्रुटियों तरह बातें त्रुटियों के बजाय चेतावनी है, जो करते हैं आपके प्रश्नों अपनी स्क्रिप्ट के प्रवाह को बाधित किए बिना चलाने के हो जाते हैं।

फिर आप एक

SHOW WARNINGS; 

के बाद सभी प्रश्नों को देखने के लिए क्या चेतावनी हुआ चला कर सकता है।

http://dev.mysql.com/doc/refman/5.1/en/insert.html

+0

यह वास्तव में वास्तव में एक अच्छा जवाब है! मैं अपने रास्ते को अभी तक रखने के लिए जा रहा हूं, लेकिन मैं निश्चित रूप से भविष्य में इसका उपयोग करूंगा। धन्यवाद :) – Mala

+0

अच्छा, मैं वास्तव में यह जवाब पसंद करता हूं। <3 – TFennis

+0

महान उत्तर के लिए धन्यवाद! – Iyas