/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste