Kør ikke en masse forespørgsler på én gang. Normalt afhænger succesen af én af, at alle de andre operationer er blevet udført korrekt, så du kan ikke bare bulldozere med, som om intet er gået galt, når der er et problem.
Du kan gøre det sådan her:
$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();
}
Glem ikke at aktivere undtagelser så eventuelle forespørgselsfejl stopper din proces i stedet for at tingene løber ud af kontrol.
Grunden til at du ikke brug multi_query
er fordi den funktion ikke understøtter pladsholderværdier. Hvis du har brug for at introducere brugerdata af en eller anden art i denne forespørgsel, skal du bruge bind_param
for at gøre det sikkert. Uden pladsholderværdier er du udsat for SQL-injektionsfejl, og en enkelt af dem er nok til at gøre hele din applikation sårbar.
Det er værd at bemærke, at PDO er meget mere fleksibel og tilpasningsdygtig end mysqli
så hvis du ikke er for meget investeret i mysqli
, er det værd at overveje et skifte.