sql >> Databáze >  >> RDS >> Mysql

PDO MySQL:Vložení více řádků do jednoho dotazu

Snadný způsob, jak se vyhnout komplikacím, by bylo něco takového

$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();
}

Tím se však příkaz provede vícekrát. Je tedy lepší, když za tímto účelem vytvoříme dlouhý jeden dotaz.

Zde je příklad toho, jak to můžeme udělat.

$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. Jak vytvořit nový databázový diagram pomocí MySQL Workbench

  2. Obnovení hlavní databáze SQL Server

  3. Jak UNION funguje v PostgreSQL

  4. Převést „datetime2“ na „date“ v SQL Server (příklady T-SQL)