sql >> Database >  >> RDS >> Mysql

PHP gebruiken om meerdere MYSQL-query's uit te voeren

Voer niet een heleboel query's tegelijk uit. Meestal hangt het succes van de ene af van het feit dat alle andere bewerkingen correct zijn uitgevoerd, dus je kunt niet zomaar bulldozeren alsof er niets mis is gegaan als er een probleem is.

Je kunt het als volgt doen:

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

Vergeet niet om uitzonderingen in te schakelen zodat eventuele mislukte zoekopdrachten uw proces stoppen in plaats van dat het uit de hand loopt.

De reden waarom u niet gebruik multi_query is omdat die functie geen tijdelijke aanduiding-waarden ondersteunt. Als u een of andere soort gebruikersgegevens in deze zoekopdracht moet invoeren, moet u bind_param . gebruiken om het veilig te doen. Zonder tijdelijke aanduiding-waarden wordt u blootgesteld aan SQL-injectie-bugs, en een enkele daarvan is voldoende om uw hele applicatie kwetsbaar te maken.

Het is vermeldenswaard dat PDO veel flexibeler en aanpasbaarder is dan mysqli dus als je niet te veel investeert in mysqli , is het de moeite waard om een ​​overstap te overwegen.



  1. Manieren om gegevens te herstellen uit het transactielogboekbestand van SQL Server

  2. Hoe repliceer je alleen INSERT's en niet DELETEs/UPDATEs op Slony Slave Node?

  3. String[] selectionArgs gebruiken in SQLiteDatabase.query()

  4. Wat betekent =*?