Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Używanie PHP do wykonywania wielu zapytań MYSQL

Nie uruchamiaj wielu zapytań naraz. Zwykle sukces jednej zależy od prawidłowego wykonania wszystkich innych operacji, więc nie możesz po prostu buldożerem, jakby nic nie poszło nie tak, gdy pojawia się problem.

Możesz to zrobić w ten sposób:

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

Nie zapomnij włączyć wyjątki tak, aby wszelkie niepowodzenia zapytania zatrzymały Twój proces, a nie wymykały się spod kontroli.

Powód, dla którego nie użyj multi_query dzieje się tak, ponieważ ta funkcja nie obsługuje wartości zastępczych. Jeśli musisz wprowadzić jakieś dane użytkownika w tym zapytaniu, musisz użyć bind_param aby zrobić to bezpiecznie. Bez wartości zastępczych jesteś narażony na błędy wstrzykiwania SQL, a jeden z nich wystarczy, aby cała Twoja aplikacja była podatna na ataki.

Warto zauważyć, że PDO jest o wiele bardziej elastyczne i adaptowalne niż mysqli więc jeśli nie inwestujesz zbyt mocno w mysqli , warto rozważyć zmianę.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak porównywać wydajność Moodle?

  2. Wartości wiążące PDO dla instrukcji MySQL IN

  3. Jakiś sposób na wybór bez powodowania blokowania w MySQL?

  4. Konfigurowanie kluczy obcych w phpMyAdmin?

  5. SQL:Jaka jest domyślna kolejność zapytań?