मेरे मन में, निम्न स्क्रिप्ट काम करना चाहिए:आप तैयार पीडीओ स्टेटमेंट में MYSQL फ़ंक्शन क्यों पास नहीं कर सकते?
$stmt = $db->prepare("UPDATE table SET status = ?, date_modified = ?");
$stmt->execute(array(1, 'NOW()'));
लेकिन जब तैयार बयान में NOW()
गुजर, कुछ नहीं होता। वास्तविक तिथि (यानी 2010-11-23) के साथ NOW()
को प्रतिस्थापित करना ठीक काम करता है।
मैं स्पष्टीकरण ऑनलाइन खोजने में असमर्थ हूँ। कोई विचार?
संपादित
बस आगे स्पष्ट करने के लिए और प्रश्न में किसी भी भ्रम से छुटकारा, मैं वास्तव में तैयार बयान हालांकि, चर के लिए पांच संभावित तिथि/समय कार्यों में से एक पर सेट हो जाएगा में एक चर पास करना चाहते हैं माई एसक्यूएल।
उदा
$ var = 'NOW()';
$ var = 'LAST_DAY (DATE_ADD (CURDATE(), इंटरवल 1 महीने));
$ var = 'LAST_DAY (CURDATE())';
$stmt->execute(array(1, $var));
मैं जानता हूँ कि यह एक ही शून्य परिणाम देंगी, लेकिन मैं चिंतित हूँ कि अगर मैं बस बदलने के लिए:
... और इतने पर ...
तैयार बयान में बदल जाता है एसक्यूएल बयान करने के लिए:
अद्यतन तालिका सेट स्थिति =, DATE_MODIFIED = $ वर
? 10
मैं अपने आप को इंजेक्शन के लिए खोलने रहा हूँ?
तैयार बयान आदेशों और डेटा के लिए ** जुदाई उपयोग किया जाता है **। और आप उस अलगाव को पूर्ववत नहीं कर सकते हैं और SQL कथन के रूप में व्याख्या किए गए डेटा प्राप्त कर सकते हैं। – mario