जब आप SQL स्ट्रिंग (prepare_update_string मुझे लगता है) का निर्माण करते हैं, साथ ही दोनों फ़ोरैच लूप्स में जहाँ आप डेटा को बाइंड करते हैं, एक इंक्रीमेंटिंग काउंट चलाते हैं और इसे बाइंड वैल्यू में जोड़ते हैं। तो ":status" बन जाता है ":status1"।
कुछ इस तरह:
$i = 1;
foreach ($data as $k => $v) {
$this->_sth->bindValue(":{$k.$i}", $v);
$i++;
}
यह किसी भी आरक्षित कीवर्ड की समस्या का समाधान करेगा।
यह उस समस्या को भी हल करता है (जो मुझे यकीन है कि आप भविष्य में सामना करेंगे) जहां आपको एक ही प्लेसहोल्डर से एक से अधिक बार जुड़ना होगा।
जैसे निम्न के बजाय, जो :status प्लेसहोल्डर
. पर दो बाइंड के कारण त्रुटि उत्पन्न करता हैSELECT * from table WHERE `status` = :status AND `otherfield` = :status
बढ़ती हुई गिनती के साथ, यह हो जाता है:
SELECT * from table WHERE `status` = :status1 AND `otherfield` = :status2
आनंद लें।