Mysql
 sql >> Database >  >> RDS >> Mysql

Come eseguire più query di inserimento in SQL utilizzando PHP in una volta sola?

Ciò significa che hai bisogno di una transazione .

Una transazione è un insieme di query che vengono eseguite tutte correttamente o, se una fallisce, falliscono tutte. Questo per assicurarti di non ritrovarti con dati di merda nelle tue tabelle.

Non

  • Non utilizzare multiquery.
  • Non utilizzare mysql_* funzione/i.
  • Non utilizzare inserti in blocco.

Le persone che ti dicono di farlo non hanno assolutamente idea di cosa stanno facendo, ignorale.

Fai

Codice di esempio:NON copiare e incollare

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

Il codice sopra salverà i dati in due tabelle SOLO se entrambi gli inserimenti hanno esito positivo.