Werte aus Textdatei lesen, und in eine Mysql-Datenbank adden
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
benutzen
brauchen
code
dank
eintragen
erstellen
geschrieben code
kleines projekt
komplikation
list
machen
quatsch
re
set
setzen
sinn
tabelle
tag
update
url
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
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. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage