sql >> Database >  >> RDS >> Mysql

Hoe voer je meerdere invoegquery's in SQL in één keer uit met PHP?

Dit betekent dat je een transactie .

Een transactie is een reeks query's die ofwel allemaal goed worden uitgevoerd, of als er één mislukt, ze allemaal mislukken. Dit is om ervoor te zorgen dat u geen onzingegevens in uw tabellen krijgt.

Niet doen

  • Gebruik geen multiquery.
  • Gebruik mysql_* niet functie(s).
  • Gebruik geen bulkbijlagen.

Mensen die je vertellen dat je dat moet doen, hebben gewoon geen idee wat ze doen, negeer ze.

Doe

Voorbeeldcode - NIET kopiëren en plakken

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

De bovenstaande code zal de gegevens ALLEEN in twee tabellen opslaan als beide invoegingen succesvol zijn.



  1. Hoe krijg ik lokale gegevens in een alleen-lezen database met dplyr?

  2. Op dubbele sleutel negeren?

  3. MuleSoft omarmt GraphQL om API-integratie te bevorderen

  4. Lees en importeer XLSX-bestand (Excel) in Oracle