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

PDO MySQL:Indsæt flere rækker i én forespørgsel

En nem måde at undgå komplikationerne på ville være sådan noget her

$stmt = $pdo->prepare('INSERT INTO foo VALUES(:a, :b, :c)');
foreach($data as $item)
{
    $stmt->bindValue(':a', $item[0]);
    $stmt->bindValue(':b', $item[1]);
    $stmt->bindValue(':c', $item[2]);
    $stmt->execute();
}

Dette udfører dog sætningen flere gange. Så det er bedre, hvis vi opretter en lang enkelt forespørgsel for at gøre dette.

Her er et eksempel på, hvordan vi kan gøre dette.

$query = "INSERT INTO foo (key1, key2) VALUES "; //Prequery
$qPart = array_fill(0, count($data), "(?, ?)");
$query .=  implode(",",$qPart);
$stmt = $dbh -> prepare($query); 
$i = 1;
foreach($data as $item) { //bind the values one by one
   $stmt->bindValue($i++, $item['key1']);
   $stmt->bindValue($i++, $item['key2']);
}
$stmt -> execute(); //execute



  1. Vælg N. række fra en tabel i Oracle

  2. SQL Server-transaktionsloggen, del 3:Grundlæggende logføring

  3. Oracle LIMIT n,m ækvivalent

  4. Ret "FEJL 1054 (42S22):Ukendt kolonne "..." i "on-klausul" i MariaDB