pc-world: Warning: mysql_real_escape_string() expects parameter 2 to be...

Bei folgendem Code kriege ich die Fehlermeldung "Warning: mysql_real_escape_string() expects parameter 2 to be resource, integer given in ...".

  
  if(isset($_POST['oldpw'])) { $oldpw = mysql_real_escape_string(htmlentities($_POST['oldpw']),ENT_QUOTES); } else { $oldpw = ''; }  
  if(isset($_POST['newpw'])) { $newpw = mysql_real_escape_string(htmlentities($_POST['newpw']),ENT_QUOTES); } else { $newpw = ''; }  
  if(isset($_POST['newpw2'])) { $newpw = mysql_real_escape_string(htmlentities($_POST['newpw2']),ENT_QUOTES); } else { $newpw2 = ''; }  

Und noch eine Frage - bin ich mit diesem Code (wenn er läuft) vor SQL-Injection und so geschützt?

  1. Hi,

    Bei folgendem Code kriege ich die Fehlermeldung "Warning: mysql_real_escape_string() expects parameter 2 to be resource, integer given in ...".

    Du solltest wirklich ins Manual schauen und nicht mit hier unnötigen Parametern aus anderen Funktionen hantieren.

    Und noch eine Frage - bin ich mit diesem Code (wenn er läuft) vor SQL-Injection und so geschützt?

    Ja - und sogar dann, wenn Du auf die unsinnige Maskierung über htmlentities() verzichtest; erst bei der HTML-Ausgabe wäre ggfls. htmlspecialchars() ratsam.

    freundliche Grüße
    Ingo

    1. Hi,

      Bei folgendem Code kriege ich die Fehlermeldung "Warning: mysql_real_escape_string() expects parameter 2 to be resource, integer given in ...".
      Du solltest wirklich ins Manual schauen und nicht mit hier unnötigen Parametern aus anderen Funktionen hantieren.

      Und noch eine Frage - bin ich mit diesem Code (wenn er läuft) vor SQL-Injection und so geschützt?
      Ja - und sogar dann, wenn Du auf die unsinnige Maskierung über htmlentities() verzichtest; erst bei der HTML-Ausgabe wäre ggfls. htmlspecialchars() ratsam.

      freundliche Grüße
      Ingo

      Danke - nachdem ich jetzt htmlentities() entfernet habe, geht es.

      1. Upps, habe gerade gemerkt, das ich den Parameter ENT_QUOTES zu htmlentities() reinbringen wollte, hab ihn aber zu mysql_real_escape_string() hinzugefügt :-)

        [Deswegen die Fehlermeldung]

  2. Hello,

    Bei folgendem Code kriege ich die Fehlermeldung "Warning: mysql_real_escape_string() expects parameter 2 to be resource, integer given in ...".

    if(isset($_POST['oldpw'])) { $oldpw = mysql_real_escape_string(htmlentities($_POST['oldpw']),ENT_QUOTES); } else { $oldpw = ''; }

    Unabhängig davon, dass man möglichst Rohdaten speichern sollte und keine manipulierten, wäre vermutlich auch htmlspecialchars() die bessere Funktion.

    Dein Fehler liegt in in einer falsch gesetzten Klammer und im fehlenden Argument für den Connection-Identifier.

    if(isset($_POST['oldpw']))
        {
            $oldpw = mysql_real_escape_string(htmlentities($_POST['oldpw'], ENT_QUOTES), $con);
        }
        else
        {
            $oldpw = '';
        }

    So wäre es formal richtig, aber eben nicht sinnvoll, da htmlentities() oder htmlspecialchars() die Daten unbrauchbar machen würden für Kontexte außerhalb HTML.

    Ein harzliches Glückauf

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de