|
| Fejl i mysql_query Fra : Brian Emilius |
Dato : 22-11-04 19:23 |
|
Hej NG
Hvorfor virker dette ikke?
$filename = "qwcms.sql";
$handle = fopen($filename, "r");
$sql = fread($handle, filesize($filename));
fclose($handle);
mysql_query($sql);
Filen qwcms.sql er et dump fra phpMyAdmin og der er ingen fejl i det, for
jeg har testet det ved at indsætte det manuelt i phpMyAdmin. Brugeren, der
logger på databasen har tilladelse til at oprette tabeller, som er en del af
query'en.
Jeg får ingen fejl-meddelelser fra mySql, men det jeg vil have ind i
databasen kommer altså ikke ind.
Venlig hilsen
Brian Emilius
| |
Peter Brodersen (22-11-2004)
| Kommentar Fra : Peter Brodersen |
Dato : 22-11-04 19:33 |
|
On Mon, 22 Nov 2004 19:23:26 +0100, "Brian Emilius" <msn@emilius.dk>
wrote:
>$filename = "qwcms.sql";
>$handle = fopen($filename, "r");
>$sql = fread($handle, filesize($filename));
>fclose($handle);
>mysql_query($sql);
mysql_query() kan kun afvikle én SQL-forespørgsel. Lad dig ikke narre
af at du i en klient kan skrive kommandoer i stil med:
SELECT * FROM foo; SELECT * FROM bar;
... her er ";" blot en delimiter i klientens verden (som også sagtens
kan ændres), og klienten sørger selv for at afvikle det som to
selvstændige queries.
Hvis du har en query pr. linje i filen kan du evt. indlæse filen med
file(), fgets() eller lignende og afvikle mysql_query linje for linje.
Dog, det kan give problemer, hvis du har en "create table"-anmodning,
der fylder flere linjer i filen.
phpMyAdmin har noget kode, der gør, at man kan paste flere queries
ind, som den så selv afvikler hver for sig. Det er en lille smule mere
kompliceret end bare at splitte på fx ";".
>Jeg får ingen fejl-meddelelser fra mySql, men det jeg vil have ind i
>databasen kommer altså ikke ind.
Har du tjekket for fejlmeddelelser? Fx helt basalt:
print mysql_error();
--
- Peter Brodersen
| |
|
|