Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wstaw wartości tablicy PDO

Po pierwsze, twoja kolejność oceny jest nieprawidłowa. Nie powinieneś ustawiać zmiennej z wartością POST PRZED sprawdzeniem, czy wartość POST w ogóle istnieje. Powinieneś sprawdzić jego istnienie, a następnie ustawić go w zmiennej tylko wtedy, gdy istnieje.

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

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

Po drugie, zakładam, że masz już połączenie sprzed (*) - więc nie ma potrzeby ponownego łączenia. Ponieważ Twoje zapytanie jest krótkie, możesz użyć ? aby powiązać parametry, jak pokazano w Przykład #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

Możesz zajrzeć do transakcji jak robisz wiele wstawek.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rozwiązanie problemu SQLinjection

  2. Błąd MySQL w CREATE TABLE dla relacji wiele-do-wielu

  3. jak dodać plik jar sterownika mysql w zaćmieniu?

  4. Wypisz zapytanie sql do tabeli html

  5. Błąd? #1146 — Tabela „xxx.xxxxx” nie istnieje