Hi,
bin PHP/MySQL Anfänger und stochere noch ganz schön im Nebel! Habe eine Site mit PHP-Scripten erstellt, die auf eine MySQL-Datenbank zugreift. Funktioniert offline gut. Jetzt gehts online und dabei zeigt sich folgendes Problem:
Der Provider bietet phpmysql; damit möchte ich per Script mit einer kommaseparierten txt-Datei eine Datenbank füllen.
Das Script sieht verkürzt so aus:
"LOAD DATA LOCAL INFILE 'e:/pfad/eintrag.txt' INTO TABLE items..."
phpMySQL meldete daraufhin:
error
"The used command is not allowed with this MYSQL-Version"
Die "eintrag.txt" liegt auf meinem Rechner. Wo die Datenbank beim Provider liegt, weiß ich nicht.
Wer kann mir helfen die Einträge in die Datenbank zu bekommen?
Gruß
RainerH
Erstens sind bei gemietetem Webspace meist die file-Privilegien für mySQL deaktiviert, und damit funktioniert LOAD DATA INFILE schon mal gar nicht.
Zweitens gibst du dem Kommando das Schlüsselwort LOCAL mit, was dem mySQL sagt, er soll auf der lokalen Maschine suchen - was für mySQL nunmal der mySQL-Server - und nicht dein Lokalrechner - ist.
Eine CSV-Datei kannst du mit diesem Code-Schnipsel (http://www.php-resource.de/forum/showthread.php?threadid=4910) in deine Tabelle einfügen. Vorher muss diese Datei aber erst einmal auf den Webserver hochgeladen werden.
Hi Titus,
danke für das Codeschnipsel. Das sieht aus wie php? Also hab ichs als datei.php in mein webverzeichnis zum Provider. Die datei mit den Einträgen hab ich auch dorthin.
Im Schnipsel hab ich $tabelle in meinen Tabellennamen umbenannt und $dateiname in den namen der Listendatei. War das soweit richtig???
Nach dem Aufruf des Codeschnipsel kommt allerdings diese Fehlermeldung:
function load_data ($items, $preisliste1.txt) { if ($fp = fopen ($preisliste1.txt, 'r')) for ($i=1; $line = fgetcsv($fp, 32768, ','); $i++) mysql_query("insert into $items values('" . implode("','", $line) . "') or echo "Fehler beim Eintragen von Zeile $i: " , htmlentities(implode(',',$line)) , '
'; else echo "'$fn' konnte nicht geöffnet werden.
"; }
Mit meinem ursprünglichen sql-script (mit dem "LOAD DATA LOCAL INFILE 'e:/pfad/eintrag.txt' INTO TABLE items..." ) gibt er mir schon ein Fenster, damit ich bei mir lokal die Datei mit den Einträgen aussuchen kann. Nur dann passt dem phpmyadmin beim Provider was nicht.
Bei mir hat es im Intranet so jedenfalls auch funktioniert..
Ziemlich Ratlos
Rainer
MelloPie
24-06-2002, 20:12
($fp = fopen ($preisliste1.txt, 'r'))
funktioniert auch nicht das $preisliste1.txt muss in Anführungszeichen.
nach einem If verwende {}
das ist übersichtlicher...
Du solltest die Funktion so lassen wie sie ist, und mit load_data ('items', 'preisliste1.txt') aufrufen.
Außerdem muss natürlich vorher mit mysql_connect (http://www.php3.de/de/mysql_connect) eine Verbindung zur Datenbank aufgebaut werden.
Und das was dein Browser da auswirft, ist keine Fehlermeldung, sondern der Quelltext des Skriptes. Du musst dem PHP-Interpreter noch sagen, dass jetzt ein Bereich mit PHP-Befehlen kommt:
<?php
// hier den Code-Schnipsel einfügen
...
// und dann ausführen
load_data ('items', 'preisliste1.txt')
?>
Lies mal die ersten Kapitel des PHP-Handbuch (http://www.php3.de/manual/de/)s!