sql >> Databáze >  >> RDS >> Mysql

Jak spustit více vkládacích dotazů v SQL pomocí PHP najednou?

To znamená, že potřebujete transakci .

Transakce je sada dotazů, které se buď všechny provedou v pořádku, nebo pokud jeden selže, všechny selžou. Tím je zajištěno, že ve vašich tabulkách neskončíte s nesmyslnými daty.

Ne

  • Nepoužívejte multiquery.
  • Nepoužívejte mysql_* funkce.
  • Nepoužívejte hromadné vložky.

Lidé, kteří vám říkají, abyste to udělali, nemají absolutně ponětí, co dělají, ignorujte je.

Proveďte

Ukázkový kód – NEKOpírujte Vložit

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

Výše uvedený kód uloží data do dvou tabulek POUZE v případě, že obě vložení budou úspěšná.



  1. O SQLite

  2. Jak porovnat dva databázové objekty v Oracle?

  3. MySQL – podmíněné COUNT s GROUP BY

  4. AKTUALIZACE pomocí SUM() v MySQL