पहला, आपके मूल्यांकन का क्रम गलत है। POST मान भी मौजूद है या नहीं, यह जांचने से पहले आपको POST मान के साथ एक चर सेट नहीं करना चाहिए। आपको इसके अस्तित्व की जांच करनी चाहिए और फिर इसे एक चर में तभी सेट करना चाहिए जब यह मौजूद हो।
$id = $conn->lastInsertId(); // obtained from above (*)
if (!isset($_POST['services'])) {
echo 'Nothing Selected';
} else {
$services = $_POST['services']; // array(0 => 1, 1 => 2, ...)
दूसरा, मैं मान रहा हूं कि आपके पास पहले से (*) से कनेक्शन है - इसलिए फिर से कनेक्ट करने की कोई आवश्यकता नहीं है। चूंकि आपकी क्वेरी संक्षिप्त है, आप ?
. का उपयोग कर सकते हैं उदाहरण #3
में दिखाए गए अनुसार अपने पैरामीटर को बाइंड करने के लिए ।
try {
$stmt = $conn->prepare('INSERT IGNORE INTO marketing_lookup SET domain_id = ?, service_id = ?');
foreach ($services as $serviceId) {
$stmt->execute(array($id, $serviceId));
}
} catch (PDOException $e) {
echo $e->getMessage();
}
}
$conn = null; // pointless
आप लेन-देन देखना चाहेंगे जैसा कि आप कई प्रविष्टियां कर रहे हैं।