Haschmich: MYSQL -> PHP syntaxfehler (Ich bin blind!)

Hallo,

ich habe einen MYSQL Syntaxfehler, und sehe ihn um himmels willen nicht folgende Zeile verursacht ihn:

  
$aendern = "UPDATE grapp1aeg Set  
name = $name,  
strasse = $strasse,  
region = $region,  
plz = $plz,  
ort = $ort,  
tel = $tel,  
fax = $fax  
WHERE  
aegid = $id  
";  
$aendern = mysql_query($aendern);  
echo mysql_error();

Quizfrage, was habe ich übersehen?

  1. Hello,

    ich habe einen MYSQL Syntaxfehler, und sehe ihn um himmels willen nicht folgende Zeile verursacht ihn:

    $aendern = "UPDATE grapp1aeg Set
    name = $name,
    strasse = $strasse,
    region = $region,
    plz = $plz,
    ort = $ort,
    tel = $tel,
    fax = $fax
    WHERE
    aegid = $id
    ";

    Wie wäre es mit ein paar Singlequotes um die Text-Werte?

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Oh Mann, danke

    2. echo $begrüßung;

      Wie wäre es mit ein paar Singlequotes um die Text-Werte?

      Und was ist mit der kontextgerechten Behandlung der Werte?

      echo "$verabschiedung $name";

  2. Mahlzeit Haschmich,

    Quizfrage, was habe ich übersehen?

    3 Dinge:

    name = $name,

    1. Es fehlen die einfachen Anführungszeichen, da es sich beim Inhalt der Variablen "$name" vermutlich um einen String handelt und die Spalte "name" vermutlich den Datentyp VARCHAR (o.ä.) handelt.

    2. Es fehlt die kontextgerecht Behandlung der Variablen - Dein Skript ist in höchstem Maße anfällig für "SQL-Injection" (informiere Dich zu diesem Stichwort!) ... vermutlich werden die Werte der einzelnen Variablen auch noch aus dem $_GET- oder $_POST-Array herauskopiert?

    Ich würde Dir ungefähr folgendes vorschlagen:

    $aendern = sprintf("UPDATE grapp1aeg SET  
    name = '%s',  
    strasse = '%s',  
    region = '%s',  
    plz = '%s',  
    ort = '%s',  
    tel = '%s',  
    fax = '%s'  
    WHERE  
    aegid = %d  
    ",  
    [link:http://de3.php.net/manual/en/function.mysql-real-escape-string.php@title=mysql_real_escape_string]($name),  
    mysql_real_escape_string($strasse),  
    mysql_real_escape_string($region),  
    mysql_real_escape_string($plz),  
    mysql_real_escape_string($ort),  
    mysql_real_escape_string($tel),  
    mysql_real_escape_string($fax),  
    mysql_real_escape_string($id)  
    );
    

    Oder benutze gleich mysqli ...

    $aendern = mysql_query($aendern);

    3. Die Variable "$aendern" enthielt vorher in einem String den SQL-Befehl - nachher enthält sie plötzlich einen ganz anderen Datentyp mit einer komplett anderen Bedeutung. Tu Dir selbst einen Gefallen und "recycle" Variablen nicht auf diese Weise: Du erschwerst Dir nur selbst die Fehlersuche ... oder ist Dir in 3 Monaten noch auf den ersten Blick klar, was wann in welcher Variablen steht?

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|