Ten eerste is uw volgorde van evaluatie verkeerd. U zou geen variabele met een POST-waarde moeten instellen VOORDAT u controleert of de POST-waarde zelfs bestaat. Je moet het bestaan ervan controleren en het dan alleen in een variabele zetten als het bestaat.
$id = $conn->lastInsertId(); // obtained from above (*)
if (!isset($_POST['services'])) {
echo 'Nothing Selected';
} else {
$services = $_POST['services']; // array(0 => 1, 1 => 2, ...)
Ten tweede neem ik aan dat je al een verbinding hebt van eerder (*) -- dus het is niet nodig om opnieuw verbinding te maken. Omdat uw zoekopdracht kort is, kunt u ?
. gebruiken om uw parameters te binden zoals getoond in Voorbeeld #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
Je zou kunnen kijken naar transacties terwijl u meerdere inserts maakt.