Wie lädt man Datenbankeinträge per Script?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wie lädt man Datenbankeinträge per Script?

    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
    nichts ist unmöglich...

  • #2
    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 in deine Tabelle einfügen. Vorher muss diese Datei aber erst einmal auf den Webserver hochgeladen werden.
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      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
      nichts ist unmöglich...

      Kommentar


      • #4
        ($fp = fopen ($preisliste1.txt, 'r'))
        funktioniert auch nicht das $preisliste1.txt muss in Anführungszeichen.
        nach einem If verwende {}
        das ist übersichtlicher...
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          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 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-Handbuchs!
          mein Sport: mein Frühstück: meine Arbeit:

          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

          Kommentar

          Lädt...
          X