Query funktionert nicht - absolut ratlos -
Rainer
- datenbank
Hallo Forumer,
ich bin dabei ein mehrsprachiges CMS zu bauen und möchte neue Sprachdatensätze per CSV-Datei auf den Server laden.
Tabellenname: cms_language_config
Tabellenspalten: l0,l1,l2 ...... bis l86, tld
Das Script:
<?
//CSV-DATEI AUF DEN SERVER LADEN
copy($sprdat,"../../phptmp/$sprdat_name");
//DATEN ÜBERTRAGEN
$delfile="../../phptmp/$sprdat_name";
$fp = fopen($delfile,"r");
while($zeile = fgetcsv($fp,500,";")):
$st="l$zeile[0]";
#echo"$tldneu - $st - $zeile[2]<br>";
mysql_query("UPDATE cms_language_config SET $st='$Zeile[2]' WHERE tld='$tldneu'");
endwhile;
fclose($fp);
//DATEI AUF DEM SERVER LÖSCHEN
if(file_exists($delfile)){@unlink($delfile);}
?>
Die Ausgabe mit "echo" zeigt alles richtig an, nur die Query funktioniert nicht.
In der Tabelle ist bei tld -> de eingetragen. Alle anderen Felder sind leer.
$tldneu kommt bei Ausgabe mit "echo" in jeder Zeile als "de" an. $st kommt ebenfalls in jeder Zeile als l0 - l86 an. Die Ausgabe $zeile[2] stimmt auch. Also hochladen, einlesen und löschen der Datei funktionieren.
Warum funktioniert die Query nicht. Fehlermeldungen kommen auch nicht. Bin im Moment absolut ratlos.
Gruss
Rainer
Hi,
$tldneu kommt bei Ausgabe mit "echo" in jeder Zeile als "de" an.
kommt es als "de" an, oder kommt es als "de
" an?
Cheatah
Hi Cheatah,
bist heute wieder ganz fix :-)
kommt absolut korrekt als "de" an.
Gruss
Rainer
Hi,
Hi Cheatah,
bist heute wieder ganz fix :-)
Cheatah-fix[tm] für Datenbankabfragen :-)
kommt absolut korrekt als "de" an.
Hast Du Dir das UPDATE-Statement mal ausgeben lassen? Hast Du daraus mal ein SELECT * FROM gemacht und Dir die gefundenen Zeilen angesehen?
Cheatah
Hast Du Dir das UPDATE-Statement mal ausgeben lassen? Hast Du daraus mal ein SELECT * FROM gemacht und Dir die gefundenen Zeilen angesehen?
alles probiert und alles i.O.
kann es sein das SET $st='$zeile[2] nicht geht?
ich meine $st als Variable in ein SET geben.
Rainer
Hi,
kann es sein das SET $st='$zeile[2] nicht geht?
nein; es kann nur sein, dass das falsche in $st drin steht.
ich meine $st als Variable in ein SET geben.
Die Datenbank sieht davon nichts. Auf PHP-Seite wird der gesamte String expandiert, bevor er an die DB weitergeleitet wird. Lasse ihn Dir testweise ausgeben, dann siehst Du es.
Cheatah
hi Rainer,
versuch mal:
mysql_query("UPDATE cms_language_config SET ".$st."='$Zeile[2]' WHERE tld='$tldneu'");
Ilja
Hallo Ilja,
mysql_query("UPDATE cms_language_config SET ".$st."='$Zeile[2]' WHERE tld='$tldneu'");
geht auch nicht und wieder keine Fehlermeldung 8-[
Gruss
Rainer
Hi und sorry alle,
while($zeile = fgetcsv($fp,500,";")):
$st="l$zeile[0]";
mysql_query("UPDATE cms_language_config SET $st='$Zeile[2]' WHERE tld='$tldneu'");
$zeile[2] und $Zeile[2] sind logischerweise 2 vershiedene Sachen.
Da hat wohl der Tippvirus in meiner Tastatur .....
Nochmals sorry speziell an Cheatah -> fix
Hatte nichts mit der DB zu tun, dann konntest du es wohl auch nicht "fix" sehen ;-)
Gruss
Rainer
Hallo.
Was gibt Dir denn das aus:
$query = "UPDATE cms_language_config SET $st='$Zeile[2]' WHERE tld='$tldneu'";
echo "-",$query,"-<br>";
mysql_query($query);
Grüße aus Würzburg
Julian
P.S: Vorsichtshalber: Ist die Verbindung zur DB hergestellt?