Eike: UPDATE funktioniert erst im zweiten Versuch! (Datenbank)

Moin,
echo"
<form action=" ";echo $PHP_SELF; echo "" method="post">
<div align="center">
  <table border="0" width="318" height="30">
    <tr>
      <td width="318" height="30">Neuer Nick: </td>
      <td width="318" height="30"><input type="text" name="neunick"></td>
    </tr>
  </table>
</div>
<br>
<center><input type="submit" value="Ändern"></form></center>
";
$sql="UPDATE users SET UserName=&#39;" . $neunick . "&#39; WHERE UserName=&#39;" . $nick . "&#39;";
if (mysql_query($sql)){
echo "jetzt funtzt das grobe!";
}
else {
echo "Nee irgendwie nicht";
}

Ich führe das script aus! gebe ein neuen Nick an und übertrage dies zur Db! In der Db steht dann aber in der Spalte nix. Ich führe das Script noch einmal aus und ich gucke erneut in die Db. Nun steht dort der neue Nick! Warum geht das beim zweiten aber nicht beim ersten Versuch? Kann man nur leere Spalten neu füllen? Das fänd ich komisch.

Vielen Dank schon mal im Vorraus!
MfG
Eike

  1. Tach!
    Du solltest zum Update auch den alten Nick als $nick übergeben ... z.B. in einem <input type="hidden" name="nick" value="..."> sonst steht in der WHERE-Klausel effektiv "UserName=''" ;-)

    Tipp: Ein "echo $sql" hilft sehr bei der Fehlersuche.

    Der Yeti

    1. Tach!
      Du solltest zum Update auch den alten Nick als $nick übergeben ... z.B. in einem <input type="hidden" name="nick" value="..."> sonst steht in der WHERE-Klausel effektiv "UserName=&#39;&#39;" ;-)

      Mhh das mit dem <input...> funtzt net! Aber ich weiß nun meinen Fehler.
      Ich muss vor die "UPDATE" Zeile eine kontrolle machen ob der neuenick auch wirklich vorhanden ist also mit if (isset ...)){
      dann funktioniert das.
      Aber danke. dein Tip mit dem echo hat mir wirklich geholfen!

      Mfg Eike

      1. Hast du denn den nick als primary key? Ansonsten sollte das doch kein Problem sein ...
        Aber Hauptsache du hast es jetzt gelöst. ;-)

        1. Nein ich hab ihn nicht als primary key.
          Ach noch mal eine Frage! Wenn ich ein passwort mit MD5 verschlüsseln will wie muss ich das schreiben? UserPass=MD5'" . $pass . "'????
          Oder wie?

          1. Egal. Wenn du MySQL den Hashwert bilden lassen willst, so wie du aber natürlich mit Klammern, nämlich:

            UserPass=MD5('$pass')

            Wenn du PHP das überlassen willst, so:

            UserPass='" . md5($pass) . "'

            Ich würde dir aber PHPs crypt(http://php.net/crypt) empfehlen mit MD5-Salt. Schließlich ist MD5 "nur" eine Hashfunktion und theoretisch könnten dann zwei Passwörter denselben Hashwert haben und somit auch funktionieren.

            Sehe gerade, unter MySQL gibt es diese Funktion auch: http://dev.mysql.com/doc/mysql/de/Miscellaneous_functions.html#IDX1287
            Du solltest aber natürlich aufpassen, dass Ver- und Entschlüsselung mit derselben Funktion (entweder aus PHP oder aus MySQL) passieren. ;-)

  2. Hi,

    $sql="UPDATE users SET UserName=&#39;" . $neunick . "&#39; WHERE UserName=&#39;" . $nick . "&#39;";
    if (mysql_query($sql)){

    Versteht MySQL numerische Zeichenreferenzen wie &#39; ?

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.