Rainer: Query funktionert nicht - absolut ratlos -

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

  1. 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

    --
    X-Will-Answer-Email: No
    1. Hi Cheatah,

      bist heute wieder ganz fix :-)

      kommt absolut korrekt als "de" an.

      Gruss
      Rainer

      1. 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

        --
        X-Will-Answer-Email: No
        1. 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

          1. 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

            --
            X-Will-Answer-Email: No
  2. hi Rainer,

    versuch mal:

    mysql_query("UPDATE cms_language_config SET ".$st."='$Zeile[2]' WHERE tld='$tldneu'");

    Ilja

    1. 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

  3. 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

  4. 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?