MySQL-Insert bringt seltsames Ergebnis

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

  • MySQL-Insert bringt seltsames Ergebnis

    Hi,

    Ich hab hier ein Problem bei einem DB-Insert.

    Ausgangspunkt ist ein mehrdimensionales Array $arrPlanetData, dessen einzelnen Elemente wie folgt aufgebaut sind:

    Array
    (
    [0] => 1
    [1] => Tattooine
    [2] => Darth_Vader
    [3] => [DZ]
    [4] => 566
    Das Array wird schrittweise abgefragt ( in einer for-schleife - das es mit foreach auch ginge, ist mir klar) und Einträge in eine DB gemacht:

    PHP-Code:
    $insertSQL "INSERT INTO userdata
    SET nick     = '"
    .mysql_escape_string($arrPlanetData[$i][2])."'
    AND allytag    ='"
    .mysql_escape_string($arrPlanetData[$i][3])."'";
        
     echo 
    $insertSQL// zu Debug-Zwecken
                            
    $insertUser $insertSQL
    Mein Problem: In der DB erhalte ich zwar für jedes Element des Arrays einen Eintrag - aber der lautet dann nicht

    nick = "Darth_Vader" und allytag = "[DZ]",
    sondern:
    nick = "0" und allytag bleibt leer.

    Auch wenn ich die per echo ausgegebene MySQL-Insertabfrage (z.B. im Beispielfall:

    INSERT INTO userdata
    SET nick = 'Darth_Vader' AND allytag ='[DZ]'
    in phpMyAdmin kopiere und ausführe, kommt es zu diesem falschen Ergebnis. Wenn ich die beiden Strings über das "Einfügen"-Formular von phpMyAdmin eingebe, dann wird der Eintrag richtig erstellt, was dafür spricht, dass die DB-Felder richtig formatiert sind.

    Warum also dieses Ergebnis?

    etwas ratlos,
    mardeluk

  • #2
    welchen typ haben denn die felder in der db?

    gruß
    peeter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      deine INSERT SYNTAX ist meiner meinung nach falsch.

      mach das mal so.

      PHP-Code:
      $insertSQL "INSERT INTO userdata
      SET
         nick     = '"
      .mysql_escape_string($arrPlanetData[$i][2])."',
         allytag    ='"
      .mysql_escape_string($arrPlanetData[$i][3])."'";
          
       echo 
      $insertSQL// zu Debug-Zwecken
                              
      $insertUser $insertSQL
      und dann entsprechend die angesprochenen feldtypen. aber hier gehe ich mal davon aus, dass du das schon richtig hast.
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        Mist, das war also so ein simpler Fehler... (das AND war natürlich zuviel, danke!).

        Komisch nur, dass dabei von PHP kein Protest bei Ausführung des Scripts kam...

        Danke nochmal für die schnelle Hilfe,

        mardeluk

        Kommentar


        • #5
          Original geschrieben von mardeluk
          (das AND war natürlich zuviel, danke!).
          und das komma in der vorherigen zeile zu wenig. vergiss das bitte nicht!


          Original geschrieben von mardeluk
          Komisch nur, dass dabei von PHP kein Protest bei Ausführung des Scripts kam...
          wozu auch. das wäre ein sql fehler und den kannst du wie bekannt mit mysql_error() sehen.
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar

          Lädt...
          X