Professor Hase: Folgefrage

Beitrag lesen

Hi dedlfix!

Das sind Platzhalter, die die Funktion sprintf() auswertet und durch die nachfolgenden Parameterwerte ersetzt. Es ist im Prinzip nur eine andere Art, einen String aus festen und variablen Bestandteilen zusammenzusetzen. In meinen Augen jedoch eine übersichtlichere, weil das SQL-Statement vollständig, in einem Teil notiert ist (wenn auch mit Platzhaltern statt Werten) und nicht ständig durch Stringende-Stringverknüpfung-Stringanfang unterbrochen wird.

Es tut mir leid, ich habe _keine Ahnung_, wovon Du sprichst. =(

Gibts die Erklärung auch für Dummys, so wie mich?

Ich habe das Beispiel jetzt übrigens für eine Testseite von mir übernommen.
Ich habe eine Datenbank mit der Tabelle "gbtabelle1". Dort gibt es 3 Felder.  Ein ID-Feld (wird automatisch eingetragen), das Feld "gbtb1_vorname" und das Feld "gbtb1_familienname" Letztere sind beide angelegt als Textfelder, Kollation ist "utf8_unicode_ci".

Es kommt KEINE Fehlermeldung, allerdings werden die Datensätze nicht eingetragen. Woran _das_ liegt, verstehe ich auch nicht.

  
   <?php  
    include("../../../../../outsourcing/datenbank/dbverbindung.php");  
    // Die Verbindung zur Datenbank wird hergestellt.  
    if(get_magic_quotes_gpc())  
     {  
      $vorname=stripslashes($_POST["vorname"]);  
      $familienname=stripslashes($_POST["familienname"]);  
      // Wenn "get_magic_quotes_gpc" auf ON eingestellt ist, dann wird die automatische Maskierung entfernt.  
     }  
    else  
     {  
      $vorname=$_POST["vorname"];  
      $familienname=$_POST["familienname"];  
      // Wenn "get_magic_quotes_gpc" auf OFF eingestellt ist, dann werden die nicht automatisch maskierten Einträge übernommen.  
     }  
    echo"VOR dem query: Vorname = ".$vorname." und Nachname = ".$familienname;  
    $query = sprintf("INSERT INTO gbtabelle1 (`gbtb1_vorname`, `gbtb1_familienname`) VALUES ('%s', '%s',)",  
                    mysql_real_escape_string($vorname),  
                    mysql_real_escape_string($familienname)  
                    );  
  
        mysql_query($query);  
    mysql_close;  
   ?>  

Woran liegt es, daß nichts eingetragen wird in die DB?

Leider krankt diese Tutorialseite an den altbekannten Anfängerunsitten und -fehlern. Zum einen ist da das übliche unsinnige Umkopieren der Eingabewerte in andere Variablen enthalten, und zum anderen fehlt die kontextgerechte Behandlung der Werte, die unter anderem auch dem Schutz gegenüber SQL-Injection dient.

Schade, das war eines der wenigen Dinge, die ich verstanden habe. *seufz*

Danke für Deine Hilfe!!!!

Prof. Hase