PHP Problem bei SQL Datei ausführen

BFreakout

Erfahrenes Mitglied
Hallo@all,

habe eine wirklich rätzelhafte nacht hinter mir und google hat mir leider nicht weiterhelfen können... kann ja sein das jemand eine ahnung hat warum...

es geht um folgendes wie im titel schon erwähnt, um eine ausführung von einem SQL code aus einer externen datei...

er liesst die Datei (korrekt) mit fopen ein, allerdings gibt mysql_query nur fehlermeldungen zurück :/ kann ich einfach nicht verstehen... MySQL Verbindung kann auch aufgebaut werden und bei phpmyadmin funktioniert es einwandfrei...

1, SQL Datei umgeändert (hat nichts gebracht)
2, SQL Datei mit implode eingelesen, hat nichts gebracht

hier ein auszug der fehlermeldung:

Fehler:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '268' at line 1

Wir haben allerdings kein fehler in der SQL Datei finden können, wie geagt phpmyadmin macht es ja auch ohne probleme...

bin mit meinem latein am ende... bitte hilfts mir :)
 
Lass dir mal die zusammengesetzte Datenbankabfrage, wie sie schließlich an den Datenbankserver geschickt wird, ausgeben.
 
Also hab noch mal rumgespielt aber es wird nicht besser...

hier meine PHP datei:

PHP:
<?php

// Öffne SQL Datei
// $file = fopen("termine.sql","r");
$file = implode("", file("termine.sql"));
// $file = readfile('termine.sql');

echo "SQL Datei wird geöffnet...<br>";
echo $file;

// MySQL Verbinden
include "db_open.inc.php";
echo "Mit MySQL Datenbank verbinden...<br>";

// Importiere in MySQL
// mysql_query($file); 
$result = mysql_query($file) or die ("Fehler:<br>".mysql_error());
echo $result;

echo "Termine werden in die MySQL Datenbank übernommen...<br>";
?>

und hier die SQL Datei:

Code:
create table if not exists TermKram ( 
   PLZ varchar(2),
   Stadt varchar(21) NOT NULL,
   Platz varchar(45),
   VonBis varchar(13),
   Markt varchar(45),
   Veranstalter varchar(20) NOT NULL,
   Tel varchar(16) NOT NULL,
   Info varchar(255),
   PLZV varchar(5),
   Art varchar(8),
   von DATE,
   bis DATE,
   key(PLZV)
);

INSERT INTO TermKram (PLZ,Stadt,Platz,VonBis,Markt,Veranstalter,Tel,Info,PLZV,Art,Von,Bis)
  VALUES ('01', 'Nünchritz', 'Marktplatz', '        09.06', 'Krammarkt', 'Gemeinde', '035265/50017', 'Keine weiteren Informationen vorhanden.', '01000', 'K', '2008-06-09', '2008-06-09');
INSERT INTO TermKram (PLZ,Stadt,Platz,VonBis,Markt,Veranstalter,Tel,Info,PLZV,Art,Von,Bis)
  VALUES ('01', 'Senftenberg', 'Innenstadt', '  29.06-01.07', 'Peter u. Paul', 'Alex', '0391/6314643', 'Keine weiteren Informationen vorhanden.', '01957', 'K', '2008-06-29', '2008-07-01');
INSERT INTO TermKram (PLZ,Stadt,Platz,VonBis,Markt,Veranstalter,Tel,Info,PLZV,Art,Von,Bis)
  VALUES ('04', 'Leipzig', 'Zentrum', '        29.06', 'Peter u. Paul', 'Stadtverwaltung', '03573/701261', 'Keine weiteren Informationen vorhanden.', '04005', 'K', '2008-06-29', '2008-06-29');
INSERT INTO TermKram (PLZ,Stadt,Platz,VonBis,Markt,Veranstalter,Tel,Info,PLZV,Art,Von,Bis)
  VALUES ('04', 'Leipzig', 'am Sportforum', '        01.06', 'Verbrauchermarkt', 'Seifert', '0341/1258303', 'Keine weiteren Informationen vorhanden.', '04006', 'K', '2008-06-01', '2008-06-01');
INSERT INTO TermKram (PLZ,Stadt,Platz,VonBis,Markt,Veranstalter,Tel,Info,PLZV,Art,Von,Bis)
  VALUES ('06', 'Bad Dürrenberg', '', '  22.06-24.06', 'Brunnenfest', 'Alex', '0391/6314643', 'Größter Markt der Region seit 1900', '06227', 'K', '2008-06-22', '2008-06-24');
INSERT INTO TermKram (PLZ,Stadt,Platz,VonBis,Markt,Veranstalter,Tel,Info,PLZV,Art,Von,Bis)
  VALUES ('06', 'Bad Dürrenberg', 'Borlachplatz', '  22.06-24.06', 'Brunnenfest', 'Stadtverwaltung', '03462/9987026', 'Keine weiteren Informationen vorhanden.', '06228', 'K', '2008-06-22', '2008-06-24');
INSERT INTO TermKram (PLZ,Stadt,Platz,VonBis,Markt,Veranstalter,Tel,Info,PLZV,Art,Von,Bis)
  VALUES ('08', 'Zwickau', 'Hauptplatz', '        27.06', 'Sachsenmarkt', 'Kultour Z', '0375/2713281', 'Keine weiteren Informationen vorhanden.', '08001', 'K', '2008-06-27', '2008-06-27');
INSERT INTO TermKram (PLZ,Stadt,Platz,VonBis,Markt,Veranstalter,Tel,Info,PLZV,Art,Von,Bis)
  VALUES ('09', 'Chemnitz', 'Rathaus', '        04.06', 'Krammarkt', 'Stadtverwaltung', '0371/4883132', 'Größter Markt der Region seit 1881', '09001', 'K', '2008-06-04', '2008-06-04');
INSERT INTO TermKram (PLZ,Stadt,Platz,VonBis,Markt,Veranstalter,Tel,Info,PLZV,Art,Von,Bis)
  VALUES ('10', 'Berlin-Spandau', '', '  15.06-17.06', 'Havelfest', 'Info:', '03036757261', 'Keine weiteren Informationen vorhanden.', '10000', 'K', '2008-06-15', '2008-06-17');

und folgende meldung kommt auf dem Browser:

SQL Datei wird geöffnet...
create table if not exists TermKram ( PLZ varchar(2), Stadt varchar(21) NOT NULL, Platz varchar(45), VonBis varchar(13), Markt varchar(45), Veranstalter varchar(20) NOT NULL, Tel varchar(16) NOT NULL, Info varchar(255), PLZV varchar(5), Art varchar(8), von DATE, bis DATE, key(PLZV) ); INSERT INTO TermKram (PLZ,Stadt,Platz,VonBis,Markt,Veranstalter,Tel,Info,PLZV,Art,Von,Bis) VALUES ('01', 'Nünchritz', 'Marktplatz', ' 09.06', 'Krammarkt', 'Gemeinde', '035265/50017', 'Keine weiteren Informationen vorhanden.', '01000', 'K', '2008-06-09', '2008-06-09'); INSERT INTO TermKram (PLZ,Stadt,Platz,VonBis,Markt,Veranstalter,Tel,Info,PLZV,Art,Von,Bis) VALUES ('01', 'Senftenberg', 'Innenstadt', ' 29.06-01.07', 'Peter u. Paul', 'Alex', '0391/6314643', 'Keine weiteren Informationen vorhanden.', '01957', 'K', '2008-06-29', '2008-07-01'); INSERT INTO TermKram (PLZ,Stadt,Platz,VonBis,Markt,Veranstalter,Tel,Info,PLZV,Art,Von,Bis) VALUES ('04', 'Leipzig', 'Zentrum', ' 29.06', 'Peter u. Paul', 'Stadtverwaltung', '03573/701261', 'Keine weiteren Informationen vorhanden.', '04005', 'K', '2008-06-29', '2008-06-29'); INSERT INTO TermKram (PLZ,Stadt,Platz,VonBis,Markt,Veranstalter,Tel,Info,PLZV,Art,Von,Bis) VALUES ('04', 'Leipzig', 'am Sportforum', ' 01.06', 'Verbrauchermarkt', 'Seifert', '0341/1258303', 'Keine weiteren Informationen vorhanden.', '04006', 'K', '2008-06-01', '2008-06-01'); INSERT INTO TermKram (PLZ,Stadt,Platz,VonBis,Markt,Veranstalter,Tel,Info,PLZV,Art,Von,Bis) VALUES ('06', 'Bad Dürrenberg', '', ' 22.06-24.06', 'Brunnenfest', 'Alex', '0391/6314643', 'Größter Markt der Region seit 1900', '06227', 'K', '2008-06-22', '2008-06-24'); INSERT INTO TermKram (PLZ,Stadt,Platz,VonBis,Markt,Veranstalter,Tel,Info,PLZV,Art,Von,Bis) VALUES ('06', 'Bad Dürrenberg', 'Borlachplatz', ' 22.06-24.06', 'Brunnenfest', 'Stadtverwaltung', '03462/9987026', 'Keine weiteren Informationen vorhanden.', '06228', 'K', '2008-06-22', '2008-06-24'); INSERT INTO TermKram (PLZ,Stadt,Platz,VonBis,Markt,Veranstalter,Tel,Info,PLZV,Art,Von,Bis) VALUES ('08', 'Zwickau', 'Hauptplatz', ' 27.06', 'Sachsenmarkt', 'Kultour Z', '0375/2713281', 'Keine weiteren Informationen vorhanden.', '08001', 'K', '2008-06-27', '2008-06-27'); INSERT INTO TermKram (PLZ,Stadt,Platz,VonBis,Markt,Veranstalter,Tel,Info,PLZV,Art,Von,Bis) VALUES ('09', 'Chemnitz', 'Rathaus', ' 04.06', 'Krammarkt', 'Stadtverwaltung', '0371/4883132', 'Größter Markt der Region seit 1881', '09001', 'K', '2008-06-04', '2008-06-04'); INSERT INTO TermKram (PLZ,Stadt,Platz,VonBis,Markt,Veranstalter,Tel,Info,PLZV,Art,Von,Bis) VALUES ('10', 'Berlin-Spandau', '', ' 15.06-17.06', 'Havelfest', 'Info:', '03036757261', 'Keine weiteren Informationen vorhanden.', '10000', 'K', '2008-06-15', '2008-06-17');Mit MySQL Datenbank verbinden...
Fehler:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '; INSERT INTO TermKram (PLZ,Stadt,Platz,VonBis,Markt,Veranst



Ich hoffe ihr kommt mit :) das wäre echt klasse, bin schon am verzweifeln :(
bestimmt irgendwas einfaches... aber ich find es einfach nicht...

wie schon gesagt, phpmyadmin machts ohne probleme... muß aber so gelöst werden...
 
Die mysql_query()-Funktion kann immer nur eine MySQL-Anweisung verarbeiten. Daher auch die Fehlermeldung, dass das Semikolon falsch sei.

Du könntest nun den Inhalt der Datei am Semikolon zerteilen und die Anweisungen einzeln abschicken.
 
okay... hab jetzt folgendes getestet...

Das ist die SQL Datei:

Code:
create table if not exists TermKram ( PLZ varchar(2), Stadt varchar(21) NOT NULL, Platz varchar(45), VonBis varchar(13), Markt varchar(45), Veranstalter varchar(20) NOT NULL, Tel varchar(16) NOT NULL, Info varchar(255), PLZV varchar(5), Art varchar(8), von DATE, bis DATE, key(PLZV) );

und das kamm dan als ergebnis:

SQL Datei wird geöffnet...
create table if not exists TermKram ( PLZ varchar(2), Stadt varchar(21) NOT NULL, Platz varchar(45), VonBis varchar(13), Markt varchar(45), Veranstalter varchar(20) NOT NULL, Tel varchar(16) NOT NULL, Info varchar(255), PLZV varchar(5), Art varchar(8), von DATE, bis DATE, key(PLZV) );Mit MySQL Datenbank verbinden...
Fehler:
No Database Selected

? Werde jetzt mal nur einen befehl setzen aber die DB hat keine Tabelle?!.... :/
 
wir hatten dies mit nur 1 befehl ja schon mal probiert und jetzt klappt es auch nicht...

Tabelle wenn schon nicht angelegt werden kann gehen natürlich auch keine Datensätze,
kamm also die selbe fehlermeldung.

No Database Selected
 
Hab da denn Fehler endeckt, mysql_select_db($dbname); war das Problem... war auskommentiert.. allerdings gings das vorher auch nicht, ich denke weil eben mehrere SQL befehle in der in der Datenbank datei sind...

wie könnte ich das am besten trennen
 
Wie Gumbo schon gesagt hat, in dem du die Befehle anhand der Semikolon trennst und dann mit einer Schleife allesamt durchgehst.

[phpf]explode[/phpf]
[phpf]foreach[/phpf]

Sollten dir dabei helfen.
 
Zurück