Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Valores de array de inserção PDO


Primeiro, sua ordem de avaliação está errada. Você não deve definir uma variável com um valor POST ANTES de verificar se o valor POST existe. Você deve verificar sua existência e configurá-la em uma variável somente se ela existir.
$id = $conn->lastInsertId(); // obtained from above (*)

if (!isset($_POST['services'])) {
    echo  'Nothing Selected';
} else {
    $services = $_POST['services']; // array(0 => 1, 1 => 2, ...)

Segundo, suponho que você já tenha uma conexão anterior (*) -- portanto, não há necessidade de reconectar. Como sua consulta é curta, você pode usar ? para vincular seus parâmetros conforme mostrado no Exemplo nº 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

Você pode querer examinar transações como você está fazendo várias inserções.