Das ";" ist zu viel
HeikoH
- php
Hallo,
ich möchte über einen Dateiupload für eine Datei die mySQL Anweisungen beinhaltet ausführen lassen.
INSERT INTO tabelle1
VALUES (
1,
'wert1',
'0',
'wert2',
'0' );
INSERT INTO tabelle2
VALUES (
1,
'wert1',
'0',
'wert2',
'0' );
Das Ende der Insertanweisung wird mit ";" beendet. Doch leider
bricht auch hier die Anweisung ab. Wenn ich nur eine Tabelle mit Werte versehe und den ";" weglasse funktioniert es.
Wie kann ich PHP (oder mySQL) überlisten?
Hallo,
ich möchte über einen Dateiupload für eine Datei die mySQL Anweisungen beinhaltet ausführen lassen.
INSERT INTO tabelle1
VALUES (
1,
'wert1',
'0',
'wert2',
'0' );
INSERT INTO tabelle2
VALUES (
1,
'wert1',
'0',
'wert2',
'0' );
Das Ende der Insertanweisung wird mit ";" beendet. Doch leider
bricht auch hier die Anweisung ab. Wenn ich nur eine Tabelle mit Werte versehe und den ";" weglasse funktioniert es.
Wie kann ich PHP (oder mySQL) überlisten?
Wie führst Du das aus?
Was für Fehlermeldungen kommen?
Andreas
Hallo,
ich möchte über einen Dateiupload für eine Datei die mySQL Anweisungen beinhaltet ausführen lassen.
INSERT INTO tabelle1
VALUES (
1,
'wert1',
'0',
'wert2',
'0' );
INSERT INTO tabelle2
VALUES (
1,
'wert1',
'0',
'wert2',
'0' );
Das Ende der Insertanweisung wird mit ";" beendet. Doch leider
bricht auch hier die Anweisung ab. Wenn ich nur eine Tabelle mit Werte versehe und den ";" weglasse funktioniert es.
Wie kann ich PHP (oder mySQL) überlisten?
Wie führst Du das aus?
Ich öffne die Datei mit "fopen", dann eine "while" Schleife zum Zeilenauslesen und einer Variablen werden die Zeilen zugeführt und dann "mysql_query" - also nix besonderes denk ich
Was für Fehlermeldungen kommen?
Einen Syntaxfehler. Er zeigt auch das ";" an und wenn ich es weglasse dann near INSERT INTO tabelle2
Andreas/Heiko
Tach (nochmal...)
Passen die Werte zu *beiden* Tabellen?
fastix
Tach (nochmal...)
Passen die Werte zu *beiden* Tabellen?
fastix
Sie passen, ich denke, es liegt an der Beendigung von mysql_query durch das Semikolon...
Tach (nochmal...)
Sie passen, ich denke, es liegt an der Beendigung von mysql_query durch das Semikolon...
Könnte sein. Dann splitte die Variable am Semikolon und schicke die Befehle in einer Schleife einzeln durch. (Als ersten work- arround)
Soweit ich mich erinnere, schreibe ich bei den SQL- Befehlen auch keine ";" dahinter, wenn ich PHP verwende. (Sieh übrigens mal nach: der PHP- Admin zeigt Dir den SQL- Befehl wieder an. Vielleicht ja die "verhübschte" Version...
Dann dürfen wir beide PHP- Handbuch lesen...
fastix
Tach (nochmal...)
Sie passen, ich denke, es liegt an der Beendigung von mysql_query durch das Semikolon...
Könnte sein. Dann splitte die Variable am Semikolon und schicke die Befehle in einer Schleife einzeln durch. (Als ersten work- arround)
Soweit ich mich erinnere, schreibe ich bei den SQL- Befehlen auch keine ";" dahinter, wenn ich PHP verwende. (Sieh übrigens mal nach: der PHP- Admin zeigt Dir den SQL- Befehl wieder an. Vielleicht ja die "verhübschte" Version...
Dann dürfen wir beide PHP- Handbuch lesen...
fastix
Was soll ich sagen: myAdmin kann damit um:
...
'ohne',
'0',
'tasche',
'0' );
INSERT INTO klasse4
VALUES (
2,
'NULL',
'NULL',
...
Mal einen Ausschnitt dazu.
...und das Handbuch?
Heiko
Tach (nochmal...)
Sie passen, ich denke, es liegt an der Beendigung von mysql_query durch das Semikolon...
Könnte sein. Dann splitte die Variable am Semikolon und schicke die Befehle in einer Schleife einzeln durch. (Als ersten work- arround)
Mach das jetzt erstmal so...
ich finde es auch nicht. wenn ich es mit dem admin mache, dann nimmt er die Dumps, gebe ich es anders ein (Ich habe ein PHP- Script für administrative Zwecke, dann meckert mysql sogar bei:
select * from irgendwas;
select * from irgendwas;
Und zwar mit und ohne Zeilenumbruch. Schick die einzelnen Befehle also in einer Schleife einzeln hin, nachdem Du sie getrennt hast. Mach einfach ein Array und ein While. Du musst ja die Datenbankverbindung nicht jedesmal schließen und wieder öffnen.
Ich muss jetzt los, auf die Autobahn...
Morgen früh gehts weiter mit arbeiten. Aber gut mal zu sehen, dass ich auch nicht alles weiss.
fastix
Tach (nochmal...)
Sie passen, ich denke, es liegt an der Beendigung von mysql_query durch das Semikolon...
Könnte sein. Dann splitte die Variable am Semikolon und schicke die Befehle in einer Schleife einzeln durch. (Als ersten work- arround)
Mach das jetzt erstmal so...
ich finde es auch nicht. wenn ich es mit dem admin mache, dann nimmt er die Dumps, gebe ich es anders ein (Ich habe ein PHP- Script für administrative Zwecke, dann meckert mysql sogar bei:
select * from irgendwas;
select * from irgendwas;
Und zwar mit und ohne Zeilenumbruch. Schick die einzelnen Befehle also in einer Schleife einzeln hin, nachdem Du sie getrennt hast. Mach einfach ein Array und ein While. Du musst ja die Datenbankverbindung nicht jedesmal schließen und wieder öffnen.
Ich muss jetzt los, auf die Autobahn...
Morgen früh gehts weiter mit arbeiten. Aber gut mal zu sehen, dass ich auch nicht alles weiss.
fastix
Ich danke Dir aber sehr herzlich für Deine Mühen und mache es so.
Morgen abend erfährst Du das Ergebnis.
Fahr nich so schnell (... würde meine Mutter jetzt sagen)
Gute Nacht!
HeikoH
letzter Tip:
Nimm mal den PHP- Admin auseinander: Der "verhübscht" die "Abfrage" auf jeden Fall. Vielleicht findest Du darinnen was nettes. Schau einfach nach, welches Script das Formular aufruft und dann viel Spaß beim Lesen!
selber nachgeschaut:
Es sind: db_readdump.php
oder: ldi_check.php
Dort muss das Geheimnis drinstehen.
Gute Nacht!
fastix®
Hallo,
Wie führst Du das aus?
Ich öffne die Datei mit "fopen", dann eine "while" Schleife zum Zeilenauslesen und einer Variablen werden die Zeilen zugeführt und dann "mysql_query" - also nix besonderes denk ich
Warum heißt das wohl mysql_query und nicht mysql_queries?
Was für Fehlermeldungen kommen?
Einen Syntaxfehler. Er zeigt auch das ";" an und wenn ich es weglasse dann near INSERT INTO tabelle2
Ich weiß nicht, ob es von PHP aus möglich ist, direkt im MySQL kann man Dateien, die mehrere SQL-Anweisungen enthalten, per
source Dateiname
ausführen. Das PHP-Äquivalent kenne ich nicht.
Alternativ: in Einzelstatements aufteilen und einzeln per my_sql_query ausführen.
Andreas
Hallo,
Wie führst Du das aus?
Ich öffne die Datei mit "fopen", dann eine "while" Schleife zum Zeilenauslesen und einer Variablen werden die Zeilen zugeführt und dann "mysql_query" - also nix besonderes denk ich
Warum heißt das wohl mysql_query und nicht mysql_queries?
Was meinst Du damit???
Was für Fehlermeldungen kommen?
Einen Syntaxfehler. Er zeigt auch das ";" an und wenn ich es weglasse dann near INSERT INTO tabelle2
Ich weiß nicht, ob es von PHP aus möglich ist, direkt im MySQL kann man Dateien, die mehrere SQL-Anweisungen enthalten, per
source Dateiname
ausführen. Das PHP-Äquivalent kenne ich nicht.
Bei PHPmyAdmin funktioniert es doch auch?!?
Alternativ: in Einzelstatements aufteilen und einzeln per my_sql_query ausführen.
...wenns gar nicht anders geht, muss ich wohl...
Andreas
Heiko
Warum heißt das wohl mysql_query und nicht mysql_queries?
Was meinst Du damit???
query = Einzahl, queries = Mehrzahl.
Du hast zwei queries (zweimal insert).
Andreas
Warum heißt das wohl mysql_query und nicht mysql_queries?
Was meinst Du damit???
query = Einzahl, queries = Mehrzahl.
Du hast zwei queries (zweimal insert).
Andreas
...also doch zerlegen?
HeikoH
Hallo!
Ich nehme an, Du lädst die Datei auf den Server, öffnest Sie zum Lesen, schreibst die geamte "Abfrage" in eine Variable und schickst diese zur Datenbank?
Ok. Lass Dir doch mal den Inhalt der Variable ausgeben. Dann wirst Du eventuell weitersehen.
Passen die Werte zu *beiden* Tabellen?
fastix
Hallo!
Ich nehme an, Du lädst die Datei auf den Server, öffnest Sie zum Lesen, schreibst die geamte "Abfrage" in eine Variable und schickst diese zur Datenbank? Bingo!!!
Ok. Lass Dir doch mal den Inhalt der Variable ausgeben. Dann wirst Du eventuell weitersehen.
Auch schon getan, so wie in der Datei geschrieben...
Passen die Werte zu *beiden* Tabellen? Ja, kein Problem denn bei PHPmyAdmin funzt es.
fastix
Heiko
Hallo!
Tach!
Passen die Werte zu *beiden* Tabellen? Ja, kein Problem denn bei PHPmyAdmin funzt es.
Was steht IN den Werten? PHPMyAdmin "verhübscht" die Eingaben nämlich mySQL- gerecht.
Wenn Du mySQL lokal installiert hast, kannst Du auch Befehle aus einer Datei einlesen und hast die Fehlermeldung im Klartext vor dir. Versuch das mal...
fastix
Hallo!
Tach!
Passen die Werte zu *beiden* Tabellen? Ja, kein Problem denn bei PHPmyAdmin funzt es.
Was steht IN den Werten? PHPMyAdmin "verhübscht" die Eingaben nämlich mySQL- gerecht.
...auch schon geprüft, sind i.O. (mit 123 oder abcd als Beispiel sollte es klappen)
Wenn Du mySQL lokal installiert hast, kannst Du auch Befehle aus einer Datei einlesen und hast die Fehlermeldung im Klartext vor dir. Versuch das mal...
...na, da frag ich Dich doch: Wo finde ich sie? Wird sie protokolliert? ...nich gefunden
fastix
HeikoH