Datei uploaden und an mysql senden = FEHLER

S

svenso

Hallo zusammen,

Ich habe erst gerade angefangen php zu programmieren, habt also ein wenig nachsicht mit mir... :-)

Ich habe ein problem: Ich sollte eine Datei uploaden können, was kein problem ist. Jetzt kommt das problem: die datei enthält eine ganze reihe MySQL Befehle. Die sollten nun ausgeführt werden... Aber da bekomme ich immer einen 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 `ericsson` VALUES ('T610', 'GPRS / Tri-Band / MM

Wenn ich die Datei über phpMyAdmin rauflade geht es problemlos...

Hier noch die Quellcodes der PHP:

Code:
 <?php
$tempname = $_FILES['file']['tmp_name'];
$name = $_FILES['file']['name']; 
$type = $_FILES['file']['type'];
$size = $_FILES['file']['size'];
copy("$tempname", "$name"); 
$message = join("", file($name));
    error_reporting(E_ALL);
    include 'config.php';

    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

 $result = mysql_query($message) OR die(mysql_error());

?>


und hier den Anfang der Datei mit den SQL befehlen:

Code:
INSERT INTO `ericsson` VALUES ('K700i', 'GPRS / Tri-Band / MMS', 'WAP 2.0 Browser', 'e-mail / Poly. Ringtones', 'Colordisplay / Communi-Cam', 'Farbe/Couleur/Colore:', 'Electric Blue', '', '', '', '', '', '', '', 'F2 P00-SMK500P80', '519.-', '439.-', '399.-', '369.-', '369.-', '369.-', '419.-', '339.-', '299.-', '269.-', '269.-', '269.-', '699.-', '', 'http://www.handyman.ch/images/k700.JPG', '', '', '', '', '', '', '', '', '', '', '', '');
INSERT INTO `ericsson` VALUES ('T610', 'GPRS / Tri-Band / MMS', 'WAP 2.0 Browser', 'e-mail / Poly. Ringtones', 'Colordisplay', 'Farbe/Couleur/Colore:', 'Silver', '', '', '', '', '', '', '', 'P00-SMK250', '289.-', '209.-', '169.-', '139.-', '139.-', '139.-', '189.-', '109.-', '69.-', '39.-', '39.-', '39.-', '399.-', '', 'http://www.handyman.ch/images/T610.jpg', '', '', '', '', '', '', '', '', '', '', '', '');
INSERT INTO `ericsson` VALUES ('T630', 'GPRS / Tri-Band / MMS', 'WAP 2.0 Browser', 'e-mail / Poly. Ringtones', 'Colordisplay', 'Farbe/Couleur/Colore:', 'Kühles Silber', '', '', '', '', '', '', '', '00-0SUN350P120', '269.-', '189.-', '149.-', '119.-', '119.-', '119.-', '169.-', '89.-', '49.-', '19.-', '19.-', '19.-', '549.-', '', 'http://www.handyman.ch/images/t630.jpg', '', '', '', '', '', '', '', '', '', '', '', '');
INSERT INTO `ericsson` VALUES ('Z600', 'GPRS / Tri-Band / MMS', 'WAP 2.0 Browser', 'e-mail / Poly. Ringtones', 'Colordisplay', 'Farbe/Couleur/Colore:', 'Silver', '', '', '', '', '', '', '', ' 00-SUN390', '429.-', '349.-', '309.-', '279.-', '279.-', '279.-', '329.-', '249.-', '209.-', '179.-', '179.-', '179.-', '579.-', '', 'http://www.handyman.ch/images/z600.JPG', '', '', '', '', '', '', '', '', '', '', '', '');
INSERT INTO `ericsson` VALUES ('Z200', 'GPRS / Tri-Band', 'WAP 1.1 Browser', 'e-mail / Poly. Ringtones', 'Colordisplay', '', '', '', '', '', '', '', '', '', 'P00-225', '269.-', '189.-', '149.-', '119.-', '119.-', '119.-', '169.-', '89.-', '49.-', '19.-', '19.-', '19.-', '349.-', '', 'http://www.handyman.ch/images/Z200.jpg', '', '', '', '', '', '', '', '', '', '', '', '');

Ist mir zu helfen, oder eher nicht? :-)

Würde euch danken, wenn ihr mir einen Tipp geben könntet...

Danke Sven Soltermann
 
Schon mal probiert auch Spaltennamen anzugeben, wo das zeugs reinsoll?

der korrekte syntax ist normalerweise so:

"INSERT INTO `tabellenname` (Spalte1, Spalte2...) VALUES ('Eintrag1', 'Eintrag2'...)";

Und achte darauf, dass die Spalten genauso geschrieben sind, wie sie auch in der Sql - Datenbank geschrieben sind - sonst funktioniert es nicht

shutdown
 
Hallo shutdown,

nein, habe ich nicht... Zu grosser Aufwand... Aber wenn es doch vom myAdmin geht, warum geht es dann so nicht? Ich habe ja auch für jede Spalte ein (,' ',)...

Könnte es noch an sonst was liegen, oder ist das die einzige mögliche erklärung?

Danke vielmals

Sven Soltermann
 
sehe ich das richtig, dass deine Sql - Befehle im Parameter $_FILES über name holst und das ganze dann in einen Array $message lädst.

gib mal per echo den Query aus, wie er da das Ganze einfügt

Fügt er dir die "" an Anfang und Ende jedes einzelnen INSERTS?

shutdown
 
Hallo,

nein macht er nicht... Wenn ich in die Textdatei nur eine Zeile tue, geht es... An was liegt das? Warum kann er nicht mehr als eine Zeile verarbeiten?

Gruss Sven
 
Tendenziell würde ich den join weglassen
und nur mit file arbeiten

dann natürlich mit einer schleife

$sql = file($name);
for ($lo=0;$lo<sizeof($sql),$lo++) {
$erg = mysql_query($sql[$lo]);
}
 
Hallo,

Vielen dank für eure hilfe... Jetzt hats geklappt Was hätte ich ohne euch gemacht? VIELEN DANK...

Freundliche Grüsse Sven
 
Zuletzt bearbeitet von einem Moderator:
Nachdem du wohl den query() sauber ausformuliert hast, hier noch ein weitere Hinweis zu deinem Code.

copy() verwendet man nur noch bei einer PHP Version kleiner als 4.0.3. Statt copy() nimmt man bei höheren Versionen (> 4.0.3) von PHP move_uploaded_file();
 
Zurück