मेरे पास आमतौर पर पीडीओ का विस्तार करने वाला वर्ग होता है, लेकिन मेरी कक्षा बहुत ही रिवाज है। अगर मैं इसे साफ और परीक्षण कर लेता हूं तो मैं इसे बाद में पोस्ट करूंगा। हालांकि, आपके सिस्टम का समाधान यहां दिया गया है।
function dbSet($fields, &$values) {
$set = '';
$values = array();
foreach ($fields as $field) {
if (isset($_POST[$field])) {
$set .= "`$field` = ?,";
$values[] = $_POST[$field];
}
}
return rtrim($set, ',');
}
$fields = explode(" ","name surname lastname address zip fax phone date");
$_POST['date'] = $_POST['y']."-".$_POST['m']."-"$_POST['d'];
$query = "UPDATE $table SET ".dbSet($fields, $values).", stamp=NOW() WHERE id=?";
$values[] = $id;
$dbh->prepare($query);
$dbh->execute($values);
यह सही नहीं हो सकता है और ट्विकिंग का उपयोग कर सकता है। यह ध्यान में रखता है कि $dbh
एक पीडीओ कनेक्शन के साथ सेटअप है। मेरे द्वारा किए गए किसी भी मामूली वाक्यविन्यास मुद्दों को लंबित करना, जो काम करना चाहिए।
संपादित करें
वास्तव में, मुझे लगता है कि मैं सिद्धांत ओआरएम (या कोई अन्य ओआरएम) के लिए जाऊंगा। जैसा कि आप मॉडल को सेटअप करते हैं और वहां सभी सत्यापन जोड़ते हैं, तो यह उतना ही सरल है:
$table = new Table();
$table->fromArray($_POST);
$table->save();
यह सामग्री को आसानी से पॉप्युलेट करना चाहिए। यह निश्चित रूप से एक ओआरएम के साथ है, जैसे सिद्धांत।
अपडेट किया गया
क्या पहले कोड में कुछ मामूली बदलाव किए गए, जैसे isset
वापस जाएं और rtrim
. का उपयोग करें substr
. से अधिक . पीडीओ एक्सटेंशन क्लास का मॉक अप प्रदान करने पर काम करने के लिए बस इसे करने का तरीका लेआउट करना होगा और यह सुनिश्चित करने के लिए कुछ यूनिट परीक्षण करना होगा।