sql >> Databasteknik >  >> RDS >> Mysql

PDO infoga matrisvärden

För det första är din utvärderingsordning felaktig. Du bör inte ställa in en variabel med ett POST-värde INNAN du kontrollerar om POST-värdet ens existerar. Du bör kontrollera dess existens och sedan ställa in den i en variabel endast om den finns.

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

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

För det andra, jag antar att du redan har en anslutning sedan tidigare (*) -- så det finns ingen anledning att återansluta. Eftersom din fråga är kort kan du använda ? för att binda dina parametrar som visas i Exempel #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

Du kanske vill undersöka transaktioner eftersom du gör flera inlägg.



  1. MySQL sammanfogar tabeller där tabellnamnet är ett fält i en annan tabell

  2. PDO-uppdateringstabell med array

  3. H2 postgresql-läge verkar inte fungera för mig

  4. Kan inte SUMMA(TO_NUMBER(varchar2-fält)) :ORA 01722 [ORACLE]