Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment exécuter plusieurs requêtes d'insertion en SQL en utilisant PHP en une seule fois ?

Cela signifie que vous avez besoin d'une transaction .

Une transaction est un ensemble de requêtes qui s'exécutent toutes correctement ou si l'une échoue - elles échouent toutes. Cela permet de s'assurer que vous ne vous retrouvez pas avec des données de merde dans vos tables.

Ne pas

  • N'utilisez pas de requêtes multiples.
  • N'utilisez pas mysql_* fonction(s).
  • N'utilisez pas d'encarts en vrac.

Les gens qui vous disent de faire ça n'ont absolument aucune idée de ce qu'ils font, ignorez-les.

Faire

Exemple de code - NE PAS copier coller

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

Le code ci-dessus enregistrera les données dans deux tables UNIQUEMENT si les deux insertions réussissent.