मैं इसे इस तरह से करूंगा:
पहले कॉलम घोषित करें। हम इनका उपयोग कॉलम के रूप में उपयोग के लिए $_POST का सबसेट निकालने के लिए करेंगे। अन्यथा कोई उपयोगकर्ता फर्जी अनुरोध पैरामीटर पास कर सकता है जो तालिका के किसी भी कॉलम से मेल नहीं खाता है, जो हमारे SQL को तोड़ देगा।
$columns = array('username','email','password','name');
$column_list = join(',', $columns);
नामित पैरामीटर प्लेसहोल्डर बनाएं यानी :username
।
$param_list = join(',', array_map(function($col) { return ":$col"; }, $columns));
एसक्यूएल को अलग से तैयार करें, क्योंकि अगर यह अपने स्वयं के चर में है तो इसे पढ़ना और डीबग करना आसान है।
$sql = "INSERT INTO `applications` ($column_list) VALUES ($param_list)";
हमेशा prepare()
. से लौटाई गई त्रुटि स्थिति की जांच करें और execute()
।
$statement = $db->prepare($sql);
if ($statement === false) {
die(print_r($db->errorInfo(), true));
}
यहां हम केवल लेते हैं $_POST की फ़ील्ड जो उस कॉलम से मेल खाती है जिसे हम सम्मिलित करना चाहते हैं।
$param_values = array_intersect_key($_POST, array_flip($columns));
और उस सरणी को execute()
. पर पास करें . फिर से, त्रुटि वापसी स्थिति की जांच करें।
$status = $statement->execute($param_values);
if ($status === false) {
die(print_r($statement->errorInfo(), true));
}