Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PDO fügt Array-Werte ein

Erstens ist Ihre Bewertungsreihenfolge falsch. Sie sollten eine Variable nicht mit einem POST-Wert setzen, BEVOR Sie prüfen, ob der POST-Wert überhaupt existiert. Sie sollten seine Existenz überprüfen und ihn nur dann in eine Variable setzen, wenn er existiert.

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

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

Zweitens gehe ich davon aus, dass Sie bereits eine Verbindung von früher (*) haben – es besteht also keine Notwendigkeit, die Verbindung erneut herzustellen. Da Ihre Anfrage kurz ist, können Sie ? verwenden um Ihre Parameter wie in Beispiel #3 zu binden .

    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

Vielleicht möchten Sie sich Transaktionen ansehen da Sie mehrere Einfügungen vornehmen.