सबसे पहले POST, GET, या REQUEST के माध्यम से आपके पास आने वाले किसी भी तार से बचना याद रखें (यदि आप अनिश्चित हैं तो SQL इंजेक्शन हमलों पर पढ़ें)।
कुछ इस तरह काम कर सकता है:
$semaphore = false;
$query = "UPDATE contacts SET ";
$fields = array('tel','fax','email');
foreach ($fields as $field) {
if (isset($_POST[$field]) and !empty($_POST[$field]) {
$var = mysql_real_escape_string($_POST[$field]);
$query .= uppercase($field) . " = '$var'";
$semaphore = true;
}
}
if ($semaphore) {
$query .= " WHERE Cust_Name = '$cst'";
mysql_query($query);
}
एनबी :SQL कथन बनाने के लिए कभी भी अपने $_POST सरणी के माध्यम से लूप न करें। एक विरोधी अतिरिक्त POST फ़ील्ड जोड़ सकता है और संभवतः शरारत कर सकता है। उपयोगकर्ता इनपुट सरणी के माध्यम से लूपिंग से इंजेक्शन वेक्टर भी हो सकता है:फ़ील्ड नामों को कथन में जोड़ने की आवश्यकता है, जिसका अर्थ है कि वे एक संभावित वेक्टर हैं। मानक इंजेक्शन रोकथाम तकनीक (तैयार स्टेटमेंट पैरामीटर, ड्राइवर द्वारा प्रदान किए गए उद्धरण कार्य) पहचानकर्ताओं के लिए काम नहीं करेंगे। इसके बजाय, सेट करने के लिए फ़ील्ड की श्वेतसूची का उपयोग करें, और श्वेतसूची पर लूप करें या श्वेतसूची के माध्यम से इनपुट सरणी पास करें।