sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo ejecutar múltiples consultas de inserción en SQL usando PHP de una sola vez?

Esto significa que necesita una transacción .

Una transacción es un conjunto de consultas que, o bien todas se ejecutan correctamente o, si una falla, todas fallan. Esto es para asegurarse de que no termine con datos basura en sus tablas.

No

  • No utilice consultas múltiples.
  • No use mysql_* función(es).
  • No utilice inserciones masivas.

Las personas que te dicen que hagas eso simplemente no tienen ni idea de lo que están haciendo, ignóralos.

Hacer

Código de muestra - NO copiar y pegar

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

El código anterior guardará los datos en dos tablas SOLAMENTE si ambas inserciones son exitosas.