sql >> Databasteknik >  >> RDS >> Mysql

PDO MySQL:Infoga flera rader i en fråga

Ett enkelt sätt att undvika komplikationerna skulle vara något liknande detta

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

Detta exekverar dock satsen flera gånger. Så det är bättre om vi skapar en lång enskild fråga för att göra detta.

Här är ett exempel på hur vi kan göra detta.

$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. Hur kan jag lösa ett anslutningspoolproblem mellan ASP.NET och SQL Server?

  2. Hur beräknar jag en löpande summa i SQL utan att använda en markör?

  3. Byt namn på en CHECK-begränsning i SQL Server med T-SQL

  4. Hur FORMAT() fungerar i MariaDB