Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como executar várias consultas de inserção no SQL usando PHP de uma só vez?


Isso significa que você precisa de uma transação .

Uma transação é um conjunto de consultas que todas executam bem ou se uma falha - todas falham. Isso é para garantir que você não acabe com dados ruins em suas tabelas.

Não

  • Não use multiconsulta.
  • Não use mysql_* função(ões).
  • Não use inserções em massa.

As pessoas que dizem para você fazer isso simplesmente não têm a menor ideia do que estão fazendo, ignore-as.

Faça

Código de amostra - NÃO copie e cole

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

O código acima salvará os dados em duas tabelas SOMENTE se ambas as inserções forem bem-sucedidas.