Update einer Zeile in mysql php
Ich habe eine Tabelle, die wie folgt aussieht:
Vorname Nachname Benutzername Passwort Rolle
Studierenden [email protected] student student
schüler2 schüler2 [email protected] schüler2 student
und ich möchte in der Lage zu Bearbeiten Sie eine Zeile in php.
Die Werte sind ein Auszug aus einer html-Datei wie folgt:
Benutzername
[email protected] <--Dies wird schriftlich in einem Textfeld
Passwort
schüler2 <--Dies wird schriftlich in einem Textfeld
Namen
schüler2 <--Dies wird schriftlich in einem Textfeld
Familienname
schüler2 <--Dies wird schriftlich in einem Textfeld
Rolle
student <--Dies wird schriftlich in einem Textfeld
Meiner php-Datei ist:
<?php
$hostname = "localhost";
$database = "mydb";
$username = "myuser";
$password = "mypsw";
$link = mysql_connect( $hostname , $username , $password ) or
die("Prosoxi!Provlima stin sundesi me ton server : " . mysql_error());
mysql_select_db($database,$link);
mysql_query("UPDATE user
SET username = '".mysql_real_escape_string($_POST[nusername])."',
SET password = '".mysql_real_escape_string($_POST[npassword])."',
SET name = '".mysql_real_escape_string($_POST[nname])."',
SET surname = '".mysql_real_escape_string($_POST[nsurname])."',
SET role = '".mysql_real_escape_string($_POST[nrole])."'
WHERE username='".mysql_real_escape_string($_POST[us])."'");
mysql_close($link);
header("Location: users.php");
?>
1.Das update wird nicht passieren, so dass es etwas falsch in der php-Datei, die ich nicht finden kann.
2. Wie kann ich erreichen, bereits gefüllten Felder in die html-Datei, mit den richtigen Werten, wenn ich einen bestimmten Benutzernamen?
Kann mir jemand helfen? Vielen Dank im Voraus. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist eine Menge Los hier.
Uns immer ein integer als primären Schlüssel, Beispiel: id MEDIUMINT not NULL AUTO_INCREMENT. Dann machen Sie den Primärschlüssel.
müssen Sie bereinigen Ihre Eingabe in die Datenbank mit Hilfe
mysql_real_escape_string()
müssen Sie verketten Sie Ihre Abfrage, so sollte es wie folgt Aussehen:
mysql_query("UPDATE user
SET username = '".mysql_real_escape_string($_POST[nusername])."'
SET Passwort = '".mysql_real_escape_string($_POST[npassword])."'
SET name = '".mysql_real_escape_string($_POST[nname])."'
SET Nachname = '".mysql_real_escape_string($_POST[nsurname])."'
SET role = '".mysql_real_escape_string($_POST[nrole])."'
WHERE Benutzername='".mysql_real_escape_string($_POST[us])."'");
Hier ist der korrigierte code:
beachten Sie die einfachen Anführungszeichen rund um die _POST-var, $_POST['nusername'] Sie hatte $_POST[nusername].
Probieren Sie es jetzt und sehen, ob es updates.
Wenn Sie eine Abfrage Problem, immer echo der Abfrage selbst zu sehen, ob die Daten korrekt sind wird durch! Darüber hinaus würde ich schreiben, die Abfrage wie diese:
Wenn alles andere fehlschlägt echo das SQL statement dann einfügen auf SQL-Browser/PHPMyAdmin dann debug es gibt. Dann ersetzen Sie einfach den code mit der error-free ein.
Müssen Sie sicherstellen, dass die Daten, die Sie senden sql-inject kostenlos. Könnte jemand einfach umgehen..
Ihre Abfrage, die geändert werden müssen als unten.
Auch Sie sind offen für SQL-Injection-Angriffe. So verwenden Sie besser
mysql_real_escape_string()
Funktion auch.http://php.net/manual/en/function.mysql-real-escape-string.php
Ich würde auch gerne vorschlagen, Sie einige Schritte, um mit dieser Art von Problem. Dies ist nur ein Beispiel.
Schritt 1
Wenn Sie eine SQL-Anweisung in Ihren PHP-code. Sie besser, schreiben Sie es in Ihr MySQL-tool zuerst, und testen Sie es mit sample-Werten.
Schritt 2:
Wenn die Abfrage funktioniert, dann kopieren Sie es auf php. Und ersetzen von Werten mit
mysql_real_escape_string()
unterstützen.Schritt 3:
Ausführen der Abfrage.
Schritt 4 :
Können Sie sehen, wenn es irgendwelche Fehler vorhanden.
EDIT:
Beantworten für Sie die Frage 2 "Wie kann ich erreichen, bereits gefüllten Felder in die html-Datei, mit den richtigen Werten, wenn ich einen bestimmten Benutzernamen?" könnte so sein.
Erste schreiben Sie eine select-Anweisung und erhalten Sie alle Daten, die Sie wollen. Ex.
Fügen Sie Ihren HTML-code. Ex:
<form action="edit_user.php" method="post"> <p>Username<input type="text"name="nusername" size="40"></p> <p>Password<input type="password"name="npassword" size="40"></p> <p>Name<input type="text"name="nname" size="40"></p> <p>Surname<input type="text"name="nsurname" size="40"></p> <p>Role<input type="text"name="nrole" size="40"></p> <p><input type="submit></p> </form>
Anscheinend gibt es einen syntax-Fehler in der neuesten code, den Sie geschrieben, wenn Sie erhalten die Daten von post, die Sie
$_POST[nusername]
sein und es sollte$_POST['nusername']
da es ein index des Arrays, und ich empfehle auch ein echo der Abfrage und Kommentierung der header nennen, damit Sie sehen können, was die Abfrage, die an MySQL