का हवाला देते हुए MySQL सम्मिलित मैनुअल के साथ एक MySQL सम्मिलित/अपडेट बयान तैयार कर रहा है - एक ही अद्यतन के लिए चला जाता है:मूलभूत मूल्यों
कम अगर मैं कॉलम 2 के रूप में सेट के साथUse the keyword DEFAULT to set a column explicitly to its default value. This makes it easier to write INSERT statements that assign values to all but a few columns, because it enables you to avoid writing an incomplete VALUES list that does not include a value for each column in the table. Otherwise, you would have to write out the list of column names corresponding to each value in the VALUES list.
INSERT INTO table1 (column1,column2) values ('value1',DEFAULT);
एक नई पंक्ति लिखने में
तो इसका डिफ़ॉल्ट मान - जो भी हो सकता है - डाला गया है।
लेकिन अगर मैं तैयार करने और PHP में एक बयान निष्पादित करें:
$statement = $pdoObject->
prepare("INSERT INTO table1 (column1,column2) values (?,?)");
$statement->execute(array('value1','DEFAULT'));
नई पंक्ति अपने पाठ मान के रूप में 'डिफ़ॉल्ट' में शामिल होंगे - अगर स्तंभ पाठ मान संग्रहीत करने में सक्षम है।
अब मैं पीडीओ के लिए एक अमूर्त परत (मैं इसे आवश्यक) और इस समस्या के समाधान प्राप्त करने के लिए लिखा है एक
const DEFAULT_VALUE = "randomstring";
पेश करने पर विचार कर रहा हूँ तो मैं इस तरह के बयानों पर अमल कर सकते हैं:
$statement->execute(array('value1',mysql::DEFAULT_VALUE));
और फिर विधि में जो बाध्यकारी करता है मैं उन मानों के माध्यम से जाता हूं जिन्हें बाध्य किया जाता है और यदि कुछ self::DEFAULT_VALUE
के बराबर हैं, तो तदनुसार कार्य करें।
मुझे यकीन है कि ऐसा करने का एक बेहतर तरीका है। क्या किसी और को इसी तरह की स्थितियों का सामना करना पड़ा है?
के बाद से पीडीओ अपने मूल्यों संसाधित कर रहा है के रूप में तार इनपुट होने के लिए देखते हैं अगर यकीन नहीं है, यह आप को बदलने के लिए हो सकता है की तरह लग रहा थोड़ा सा कोड, अगर यह संभव है। आप इसे बदल सकते हैं ताकि आप '... execute (array ('\' value1 \ '', 'DEFAULT') टाइप करें), लेकिन मुझे लगता है कि पीडीओ आपके लिए इन मानों को 'mysql_real_escape_string() के साथ संसाधित कर रहा है ', आदि। यह उस समारोह को हरा देगा। आपको शायद इसे सीधे 'तैयार()' तर्क में डालना होगा। – Jonah
क्यों न केवल आपके 'INSERT' कथन में कॉलम शामिल करें कि आप डिफ़ॉल्ट के अलावा किसी अन्य मान पर सेट कर रहे हैं? –
समस्या 'अद्यतन' और एक खाली सबमिट इनपुट के साथ है। मुझे इसे डिफ़ॉल्ट फ़ील्ड की आवश्यकता है, उदाहरण के लिए '0000-00-00' उदाहरण फ़ील्ड के लिए जब' '' 'नया मान के रूप में सेट किया गया हो। – raveren