WHERE-Klausel führt jedes mal zum Fehler

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

  • WHERE-Klausel führt jedes mal zum Fehler

    Nabend,
    immer wenn ich eine WHERE Klausel anwenden will kommt ein Fehler.
    Als Beispiel den Skript:

    PHP-Code:
    If(!Isset($_POST['id'])) {
                echo
    " <form action=\"index.php?section=adminbereich&action=edit\" method=\"POST\">";
                echo 
    "Es ist kein User ausgewählt. Bitte auswählen.<br>\n";
                
    $sql "SELECT
                        id,
                        username
                    FROM
                        
    $member";
                 
    $result mysql_query($sql) or die(mysql_error());
                 if(
    mysql_num_rows($result)) {
                 echo 
    "     <select size=\"1\" name=\"id\" id=\"name\">\n";
                 echo 
    "           <option value=\"0\" selected=\"selected\">Bitte wählen</option>\n";
                 while(
    $row mysql_fetch_assoc($result)) {
                   echo 
    "<option value=\"".$row['id']."\">".$row['username']."</option>\n";
                                                          }
                 echo 
    "    </select><br><br>\n";
                                             }

                 echo
    " <input type=\"submit\" value=\"Auswählen\"";
                 echo
    " <form>";
                 
                    }else{
                    
                
    $id $_POST['id'];
                    
                
    $sql "SELECT
                          username,
                          email,
                          passwort,
                          alter_tag,
                          alter_monat,
                          alter_jahr,
                          beitritt,
                          wohnort,
                          beschreibung,
                        FROM
                           
    $member
                        WHERE
                           id = '
    $id'";
                
    $result mysql_query($sql) or die(mysql_error());
                if(
    mysql_num_rows($result)) {
                while(
    $row mysql_fetch_assoc($result)) {
          
          echo 
    $row['username'];?> 
    Als Fehler kommt der übliche Text :
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM member WHERE id = '1'' at line 11

    Wenn ich es so schreibe :
    PHP-Code:
    WHERE
                                                           id 
    '"$id"'"; 
    Anhand des Fehlers rechne ich mal das der Wert übergeben wurd da es der id 1 entspricht was er übergeben soll.
    Leute die Angst vor dem Tod haben, sind Menschen die sich an einen Traum im Leben klammern

  • #2
    Hey,

    entferne mal das letzte Komma bei

    beschreibung,

    und beschäftige dich bitte mit der Abwehr von Injections.

    Ändere zumindest

    $id = $_POST['id'];

    in

    $id = (int) $_POST['id'];

    Kommentar


    • #3
      Cool

      Was sind Injections und wieso sollte ich /INT) davor setzen?
      Würdest mir eine menge suche ersparen =)
      Leute die Angst vor dem Tod haben, sind Menschen die sich an einen Traum im Leben klammern

      Kommentar


      • #4
        Original geschrieben von Skywalker077
        Cool

        Was sind Injections und wieso sollte ich /INT) davor setzen?
        Würdest mir eine menge suche ersparen =)
        http://de.wikipedia.org/wiki/SQL-Injektion#PHP

        Kommentar


        • #5
          Naja, einmal bei google (oder wiki) eingegeben hätte dich schneller ans Ziel gebracht.
          SQL-Injection

          Das mit dem (int) bewirkt (wenn ich jetzt ma nichts falsches erzähl), dass die Variable in einen Integer (Ganzzahl) geparsed wird. Kommt aber denke ich mal eher aus höheren Programmiersprachen wie Java, wo Variablen typsicher deklariert werden.
          Arbeite bei sowas am besten mit mysql_real_escape_string . Das macht das ganze einheitlicher...

          Kommentar


          • #6
            Wenn in einer Variable nur eine Zahl (zB. eine ID) stehen soll, dann sollte man auch dafür sorgen, dass es das auch wirklich tut. Macht ja nicht wirklich viel Sinn Zahlen als String zu speichern und damit zu arbeiten.

            Das selbe gilt auch für MySQL. Zahlen in Hochkomma zu setzen ist sinnlos.

            Kommentar

            Lädt...
            X