kostenloser Webspace werbefrei: lima-city


Werte aus Textdatei lesen, und in eine Mysql-Datenbank adden

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    pasi-b

    Kostenloser Webspace von pasi-b

    pasi-b hat kostenlosen Webspace.

    Hallo zusammen,


    ich hab da ein tag/re">ref="/tag/kleines projekt">kleines Projekt am laufen, ich möchte gerne Werte aus einer Textdatei lesen (im Browser) und diese dann in eine Mysql-Tabelle eintragen. Jedoch nicht alle, ich möchte nur die eintragen bei denen die ID z.B 1111 ist.


    Ich möchte deshalb nicht alle eintragen, weil es sonst über ca. 50.000 Einträge wären, und da das alles auch Aktualisiert werden soll, kann das schonmal viel Speicher ziehen.


    Derzeit mache ich das so, aber wie gesagt, es werden alle Datensätze in die Tabelle geschrieben.

    $lines = gzfile('http://url.de');
    if(!is_array($lines)) die("Datei wurde nicht gefunden");
    foreach($lines as $line) {
    	list($id, $name, $tag $rank) = explode(',', $line);
    	$name = urldecode($name);
    
    	$name = addslashes($name);
    	mysql_query("INSERT INTO tabelle SET id='$id', name='$name', tag='$tag', rank='$rank'");
    }



    Ich habe zwar schon proobiert in meinen MySql-Befehl WHERE id='1111' einzutragen, jedoch gab es da irgendwelche Komplikationen.




    MfG
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo

    INSERT INTO geht nicht mit SET sondern mit VALUES

    INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)


    ein WHERE bei INSERT ist Quatsch, denn du erstellst ja neue Einträge,
    das macht nur Sinn bei UPDATE ... (wo man mit SET arbeitet) oder bei DELETE FROM ...

    zudem solltest noch mysql_real_escape_string() für alle Einträge benutzen

    Willst Du neue Einträge erstellen oder bestehende Updaten
    (oder einen Mix aus beidem, dann muss Du vorher prüfen
    welche Neu sind, und welche "nur" ein Update brauchen)

    Wenn z.B. ID 1111 schon in der Darenbank ist, dann UPDATE


    $updatearray = ('1111', '2222', '1234');  // --- nur diese IDs updaten
    
    foreach($lines as $line) {
    $line = chop($line); 
    $data = explode(',',$line); 
    
    $id = $data[0]; 
    $name = $data[1]; 
    $tag = $data[2]; 
    $rank = $data[3]; 
    
    $name = mysql_real_escape_string($name); 
    $tag = mysql_real_escape_string($tag); 
    $rank = mysql_real_escape_string($rank); 
    
    if ( in_array($id, $updatearray) ) { 
    
    $res = mysql_query("UPDATE tabelle SET 
       name='$name', 
       tag='$tag', 
       rank='$rank' 
     WHERE id = '$id' ");
    
    if (!$res) { 
    echo "<br />Fehler !!! <br />\r\n". mysql_error(); exit; 
    }
    else {
    echo "<br />Update der ID: ".$id." \r\n"; 
    } 
    }

    und da Du ja mit WHERE id= auswählst, brauchst Du id auch nicht neu setzen


    Beitrag zuletzt geändert: 5.10.2011 19:18:17 von spiele2u
  4. Autor dieses Themas

    pasi-b

    Kostenloser Webspace von pasi-b

    pasi-b hat kostenlosen Webspace.

    spiele2u schrieb:
    Hallo

    INSERT INTO geht nicht mit SET sondern mit VALUES

    INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)


    ein WHERE bei INSERT ist Quatsch, denn du erstellst ja neue Einträge,
    das macht nur Sinn bei UPDATE ... (wo man mit SET arbeitet) oder bei DELETE FROM ...

    zudem solltest noch mysql_real_escape_string() für alle Einträge benutzen

    Willst Du neue Einträge erstellen oder bestehende Updaten
    (oder einen Mix aus beidem, dann muss Du vorher prüfen
    welche Neu sind, und welche "nur" ein Update brauchen)

    Wenn z.B. ID 1111 schon in der Darenbank ist, dann UPDATE

    mysql_query("UPDATE tabelle SET 
       name='$name', 
       tag='$tag', 
       rank='$rank' 
     WHERE id = '$id' ");

    und da Du ja mit WHERE id= auswählst, brauchst Du id auch nicht neu setzen


    Ok, danke, werde es sofort mal testen. PS: Danke! es geht.
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!