Tout d'abord, votre ordre d'évaluation est erroné. Vous ne devriez pas définir une variable avec une valeur POST AVANT de vérifier si la valeur POST existe même. Vous devez vérifier son existence puis le définir dans une variable uniquement s'il existe.
$id = $conn->lastInsertId(); // obtained from above (*)
if (!isset($_POST['services'])) {
echo 'Nothing Selected';
} else {
$services = $_POST['services']; // array(0 => 1, 1 => 2, ...)
Deuxièmement, je suppose que vous avez déjà une connexion antérieure (*) -- il n'est donc pas nécessaire de vous reconnecter. Comme votre requête est courte, vous pouvez utiliser ?
pour lier vos paramètres comme indiqué dans Exemple #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
Vous voudrez peut-être examiner les transactions car vous faites plusieurs insertions.