PHPs standard extension för MySQL kan inte hantera mer än en databasförfrågan i ett och samma utbyte med databasen. Naturligtvis klarar den av subförfrågningar, så som:
SELECT a.col1, b.col1 FROM a, (SELECT * FROM c) AS b
eller
UPDATE a SET col1=25 WHERE col2 IN (SELECT col2 FROM c WHERE col2>25)
men förfrågningar som:
INSERT INTO a (col1, col2) VALUES (11, 13);
INSERT INTO b (col1, col2) VALUES (32, 98);
SELECT * FROM a, b;
kan den vanliga implementeringen inte hantera. Det här kan ställa till problem när man t. ex. vill importera filer med SQL-satser exporterade med PHPMyAdmin eller MySQL Admin, m fl.
Ett scenario kan vara att man vill återställa en databas med jämna mellanrum, säg en testmiljö för att prova på ett CMS-verktyg eller liknande. Den vanligaste lösningen är att läsa in SQL-filen och sedan använda PHP funktionen explode() för att dela upp filens innehåll på semikolon (SQL:s tecken för att avsluta en förfrågan). Här kan det dock uppstå problem med kommentarer i SQL-filen. PHPMyAdmin lägger exempelvis in kommentarer för att göra det lättare att förstå de olika delarna. Om en kommentar råkar innehålla ett semikolon kan det förändra hela resultatet av explode(). Man kan naturligtvis manuellt se till att filen inte innehåller några sådana problem, men det kan göra det omständligt att uppdatera SQL-filen.
I jämförelse är det betydligt mycket smidigare att använda sig av MySQLi (MySQL Improved) som redan i grunden stödjer ”multiquery” och som dessutom innehåller en hel del andra smidiga förändringar. Funktionen för att skicka databasförfrågningar är mysqli_query() och med en koppling via MySQLi kan man direkt skicka in datan från SQL-filen, kommentarer kommer plockas bort automatiskt och samtliga förfrågningar kommer köras. Kom bara ihåg att det är en helt separat extension, så det går inte använda ”vanliga” MySQL funktioner från PHP, utan allt måste göras med MySQLi.
Importering av SQL-filer med MySQLi
Detta inlägg är publicerat i Blogg och har etiketter MySQL, PHP, Programmering. Bokmärk detta inlägg.
Sökmotormarknadsföring
Annonsera på sökmotorerna! Syns när någon söker efter era produkter eller tjänster!
