Mysql
 sql >> Database >  >> RDS >> Mysql

Valori dell'array di inserimento PDO

Innanzitutto, il tuo ordine di valutazione è sbagliato. Non dovresti impostare una variabile con un valore POST PRIMA di verificare se il valore POST esiste. Dovresti verificarne l'esistenza, quindi impostarlo in una variabile solo se esiste.

$id = $conn->lastInsertId(); // obtained from above (*)

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

In secondo luogo, presumo che tu abbia già una connessione di prima (*), quindi non è necessario riconnettersi. Poiché la tua query è breve, puoi utilizzare ? per associare i parametri come mostrato in Esempio 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

Potresti voler esaminare le transazioni come stai facendo più inserti.