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

Použití PHP ke spuštění více MYSQL dotazů

Nespouštějte hromadu dotazů najednou. Úspěch jedné obvykle závisí na tom, zda byly všechny ostatní operace provedeny správně, takže při problému nemůžete jen tak buldozerovat, jako by se nic nekazilo.

Můžete to udělat takto:

$queries = [
  "CREATE TEMPORARY TABLE tmp SELECT * FROM event_categoriesBU WHERE id = 1",
  "UPDATE tmp SET id=100 WHERE id = 1",
  "INSERT INTO event_categoriesBU SELECT * FROM tmp WHERE id = 100"
];

foreach ($query as $query) {
  $stmt = $conn->prepare($query);
  $stmt->execute();
}

Nezapomeňte povolit výjimky takže jakékoli selhání dotazu zastaví váš proces namísto toho, aby se věc vymkla kontrole.

Důvod neděláte použijte multi_query je to proto, že tato funkce nepodporuje zástupné hodnoty. Pokud potřebujete v tomto dotazu uvést uživatelská data nějakého druhu, musíte použít bind_param aby to bylo bezpečné. Bez zástupných hodnot jste vystaveni chybám vkládání SQL a jedna z nich stačí k tomu, aby byla zranitelná celá vaše aplikace.

Stojí za zmínku, že PDO je mnohem flexibilnější a přizpůsobivější než mysqli pokud tedy příliš neinvestujete do mysqli , stojí za to zvážit přepínač.



  1. Příkaz SQL CASE

  2. Oracle četl soubor z adresáře s výjimkou

  3. Jak zobrazit funkci, proceduru, spouští zdrojový kód v postgresql?

  4. CASCADE DELETE pouze jednou