Binni: MYSQL-Insert

Hallo zusammen,

folgender Code ...

mysql_query (sprintf("INSERT INTO $table_user
          (nick_name, full_name, group, status, anz_logins, mail, password)
          VALUES
          ('%s', '%s', '%s' ,'%s' ,'%b' ,'%s' ,'%s')",
          $nick_name, $full_name, $group_nu, $status, 0, $mail, $pw));

... erzeugt bei mir eine FALSE

was mache ich Falsch, ich sitze davor und finde den Fehler einfach nicht, es kommt aber auch keine Debug-Ausgabe - die Tabelle gibts und acuh alle Variablen sind vorhanden

Viele Grüße - der Binni

--
www.GTR-Home.de
  1. Hi Binni,

    mysql_query (sprintf("INSERT INTO $table_user
              (nick_name, full_name, group, status, anz_logins, mail, password)
              VALUES
              ('%s', '%s', '%s' ,'%s' ,'%b' ,'%s' ,'%s')",
              $nick_name, $full_name, $group_nu, $status, 0, $mail, $pw));

    Ich finde die Methode sehr ungewöhnlich, aber das tut nichts zur Sache. Du verwendest inkonsequenterweise aber $table_user als variable, statt dieses auch über die Funktion sprintf einzulesen. Sollte es nicht eigentlich heissen:
    mysql_query (sprintf("INSERT INTO '%s'
              (nick_name, full_name, group, status, anz_logins, mail, password)
               VALUES
               ('%s', '%s', '%s' ,'%s' ,'%b' ,'%s' ,'%s')",
              $table_user,$nick_name, $full_name, $group_nu, $status, 0, $mail, $pw));

    Was vielleicht für die Fehlersuche hilft wäre das Ausgeben der Mysql_error-Funktion um den Mysql-Fehler auch zu sehen, ich schätze er sagt sowas wie "Tabellenname nicht gefunden".

    Viel Spaß

    ciao
    romy

    1. Hi,

      Ich finde die Methode sehr ungewöhnlich, aber das tut nichts zur Sache. Du verwendest inkonsequenterweise aber $table_user als variable, statt dieses auch über die Funktion sprintf einzulesen. Sollte es nicht eigentlich heissen:
      mysql_query (sprintf("INSERT INTO '%s'
                (nick_name, full_name, group, status, anz_logins, mail, password)
                 VALUES
                 ('%s', '%s', '%s' ,'%s' ,'%b' ,'%s' ,'%s')",
                $table_user,$nick_name, $full_name, $group_nu, $status, 0, $mail, $pw));

      huch, da hab ich wohl ein bissl gemixt ...

      Was vielleicht für die Fehlersuche hilft wäre das Ausgeben der Mysql_error-Funktion um den Mysql-Fehler auch zu sehen, ich schätze er sagt sowas wie "Tabellenname nicht gefunden".

      ja, die hat weitergeholfen - also somit habe ich wenigstens überhaupt was gesehen

      Danke!

      Viele Grüße - der Binni

      --
      www.GTR-Home.de
  2. Hallo Binni,

    mysql_query (sprintf("INSERT INTO $table_user
              (nick_name, full_name, group, status, anz_logins, mail, password)
              VALUES
              ('%s', '%s', '%s' ,'%s' ,'%b' ,'%s' ,'%s')",
              $nick_name, $full_name, $group_nu, $status, 0, $mail, $pw));

    was mache ich Falsch,

    zusätzlich zu dem, was Romy Dir bereits gesagt hat, machst Du einen ganz simplen Fehler. Du verschachtelst zwei Dinge, die viel besser in zwei getrennte Anweisungen gehören.

    Warum nicht:

      
    $sql = sprintf("INSERT INTO %s  
              (nick_name, full_name, group, status, anz_logins, mail, password)  
              VALUES ('%s', '%s', '%s' ,'%s' ,'%b' ,'%s' ,'%s')",  
              $table_user,  
              $nick_name,  
              $full_name,  
              $group_nu,  
              $status,  
              0,  
              $mail,  
              $pw);  
      
    // Hier hast Du die Möglichkeit mit  
    // echo $sql;  
    // eine Debugausgabe einzugeben.  
      
    $result = mysql_query($sql);  
      
    // Es ist eine gute Idee, die Rückgabe von mysql_query auswerten zu können,  
    // auch bei einem INSERT
    

    ich sitze davor und finde den Fehler einfach nicht, es kommt aber auch keine Debug-Ausgabe - die Tabelle gibts und acuh alle Variablen sind vorhanden

    Du wunderst Dich über fehlende Debug-Ausgabe? Du eliminierst doch selbst jede Möglichkeit einer solchen.

    Weiterhin wäre es eine ganz hervorragende Idee, sämtliche Eingaben mit mysql_real_escape_string() zu behandeln, und zwar genau hier. Beachte die Hinweise in Beispiel 3 zu Magic Quotes.

    Freundliche Grüße

    Vinzenz

  3. Huhu Binni,

    romy und Vinzenz haben Dir ja schon gute Tipps gegeben.

    Wenn man sich nicht mit backticks herumschlagen möchte sollte man
    vor dem Benamsen seiner Tabellenspalten diese Liste inhaliert haben:

    http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html

    oder zumindest mal einen Blick drauf werfen ;-)

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. Hi,

      so, hab jetzt ne gaaaaaanze Weile gesucht und den Fehler gefunden - hehe und siehe da Du hast ihn auch entdeckt :-)
      war aus technischen Gründen nicht in der Lage ins Netz zu gehen und habe nun jdes Wort durchprobiert ... group ...

      http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html

      Danke!

      Viele Grüße - der Binni

      --
      www.GTR-Home.de