Yadgar: Problem mit PHP-Variablen in MySQL-Query

High!

Folgende Situation:

Einer (auf einem lokalen XAMPP-Server installierten) MySQL-Datenbank sollen per HTML-Eingabeformular Werte übergeben werden:

  
$query = "INSERT INTO interpret (Vorname, Nachname, Bandname) VALUES ($InterpretVorname, $InterpretNachname, $InterpretBandname)";  
$result = mysql_query($query);  

Je nachdem, ob ich die Variablennamen in der "VALUES"-Klammer in Hochkommata schreibe oder nicht, bekomme ich die MySQL-Fehlermeldung Nr. 1064 - oder es werden die Namen der Variablen statt ihrer Inhalte in die Datenbanktabelle "interpret" geschrieben!

Wie kann ich erreichen, dass wirklich die Inhalte geschrieben werden?

Bis bald im Khyberspace!

Yadgar

  1. Hallo Yadgar,

    $query = "INSERT INTO interpret (Vorname, Nachname, Bandname) VALUES ($InterpretVorname, $InterpretNachname, $InterpretBandname)";
    $result = mysql_query($query);

      
    
    > Je nachdem, ob ich die Variablennamen in der "VALUES"-Klammer in Hochkommata schreibe oder nicht, bekomme ich die MySQL-Fehlermeldung Nr. 1064 - oder es werden die Namen der Variablen statt ihrer Inhalte in die Datenbanktabelle "interpret" geschrieben!  
    >   
    > Wie kann ich erreichen, dass wirklich die Inhalte geschrieben werden?  
      
    a) die korrekte SQL-Syntax verwenden. Zeichenketten sind in SQL üblicherweise in einfache Anführungszeichen zu setzen.  
      
    b) die Variableninhalte [kontextgerecht](http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel) behandeln.  
       Eine empfehlenswerte Schreibweise findest Du im Abschnitt "[Verhindernde Maßnahmen](http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel#Verhindernde_Ma.C3.9Fnahmen)".  
      
      
      
      
    Freundliche Grüße  
      
    Vinzenz
    
    1. Hallo Yadgar,

      a) die korrekte SQL-Syntax verwenden. Zeichenketten sind in SQL üblicherweise in einfache Anführungszeichen zu setzen.

      b) die Variableninhalte kontextgerecht behandeln.
         Eine empfehlenswerte Schreibweise findest Du im Abschnitt "Verhindernde Maßnahmen".

      Danke für den Tipp... es ist zwar unglaublich umständlich, aber es funktioniert!

      Bis bald im Khyberspace!

      Yadgar

      1. Hallo,

        Danke für den Tipp... es ist zwar unglaublich umständlich, aber es funktioniert!

        [ironie]

        Stimmt folgendes wäre doch direkt viel flexibler und einfacher:

        mysql_query($_POST['name']);

        [/ironie]

        Ist so in etwa deine erste "Lösung".

        Viele Grüße Novi

        --
        "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland)
  2. Hallo,

    Je nachdem, ob ich die Variablennamen in der "VALUES"-Klammer in Hochkommata schreibe oder nicht, bekomme ich die MySQL-Fehlermeldung Nr. 1064 - oder es werden die Namen der Variablen statt ihrer Inhalte in die Datenbanktabelle "interpret" geschrieben!

    Du kennst den Unterschied zwischen einfachen und doppelten Anführungszeichen in PHP?

    Das die einfachen Anführungszeichen im Query fehlen und du die werde nicht entsprechend kontextgerecht behandelst wurde jja schon gesagt.

    Viele Grüße Novi

    --
    "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland)