sql >> Databasteknik >  >> RDS >> Mysql

Hur kör man multipla insert-fråga i SQL med PHP på en gång?

Det betyder att du behöver en transaktion .

En transaktion är en uppsättning frågor som antingen alla utförs ok eller om en misslyckas - de misslyckas alla. Detta för att säkerställa att du inte hamnar med skitdata i dina tabeller.

Gör inte

  • Använd inte multiquery.
  • Använd inte mysql_* funktion(er).
  • Använd inte massinlägg.

Folk som säger åt dig att göra det har bara absolut ingen aning om vad de gör, ignorera dem.

Gör

Exempelkod - kopiera INTE klistra in

$dsn = 'mysql:dbname=testdb;host=127.0.0.1;charset=utf8mb4';
$user = 'dbuser';
$password = 'dbpass';

$pdo = new PDO($dsn, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$insert['first'] = $pdo->prepare("INSERT INTO table SET col1 = :val, col2 = :val2");
$insert['second'] = $pdo->prepare("INSERT INTO another_table SET col1 = :val, col2 = :val2"); 

$pdo->beginTransaction();

$insert['first']->bindValue(':val', 'your value');
$insert['first']->bindValue(':val2', 'anothervalue');
$insert['first']->execute();

$insert['second']->bindValue(':val', 'your value');
$insert['second']->bindValue(':val2', 'anothervalue');
$insert['second']->execute();

$pdo->commit();

Koden ovan kommer ENDAST att spara data i två tabeller om båda infogningarna lyckas.



  1. NameError:namnet '_mysql' är inte definierat efter inställningen ändras till mysql

  2. Hur man tar bort unik nyckel från mysql-tabellen

  3. Salesforce.com länkade servrar och sp_columns_ex

  4. COUNT() Funktion i MariaDB