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

PDO indsæt matrixværdier

For det første er din evalueringsrækkefølge forkert. Du bør ikke indstille en variabel med en POST-værdi, FØR du kontrollerer, om POST-værdien overhovedet eksisterer. Du bør kontrollere dens eksistens og derefter indstille den til en variabel, hvis den eksisterer.

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

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

For det andet går jeg ud fra, at du allerede har en forbindelse fra før (*) -- så der er ingen grund til at oprette forbindelse igen. Da din forespørgsel er kort, kan du bruge ? for at binde dine parametre som vist i Eksempel #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 vil måske se nærmere på transaktioner da du laver flere indsættelser.



  1. Alias ​​Kolonnenavn i flere tilfælde

  2. Byg keycloak docker hub-billede i openshift fra ny app-kommando

  3. eksporter tabel til csv på postgres

  4. Tilslut tabeller med SUM-problem i MYSQL