Първо, вашият ред на оценка е грешен. Не трябва да задавате променлива с 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
Може да искате да разгледате транзакции тъй като правите множество вмъквания.