Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP:Einfügen von Werten aus dem Formular in MySQL

Der folgende Code deklariert lediglich eine String-Variable, die eine MySQL-Abfrage enthält:

$sql = "INSERT INTO users (username, password, email)
    VALUES ('".$_POST["username"]."','".$_POST["password"]."','".$_POST["email"]."')";

Die Abfrage wird nicht ausgeführt. Dazu müssen Sie einige Funktionen verwenden, aber lassen Sie mich zuerst etwas anderes erklären.

VERTRAUE NIEMALS BENUTZEREINGABEN :Sie sollten niemals Benutzereingaben anhängen (z. B. Formulareingaben von $_GET oder $_POST ) direkt zu deiner Anfrage. Jemand kann die Eingabe vorsichtig so manipulieren, dass sie Ihrer Datenbank großen Schaden zufügen kann. Das nennt man SQL-Injection. Mehr darüber können Sie hier nachlesen

Um Ihr Skript vor einem solchen Angriff zu schützen, müssen Sie es Verwenden Sie vorbereitete Anweisungen. Mehr zu vorbereiteten Statements hier

Fügen Sie vorbereitete Anweisungen wie folgt in Ihren Code ein:

$sql = "INSERT INTO users (username, password, email)
    VALUES (?,?,?)";

Beachten Sie, wie das ? werden als Platzhalter für die Werte verwendet. Als nächstes sollten Sie die Anweisung mit mysqli_prepare vorbereiten :

$stmt = $mysqli->prepare($sql);

Beginnen Sie dann mit der Bindung der Eingabevariablen an die vorbereitete Anweisung:

$stmt->bind_param("sss", $_POST['username'], $_POST['email'], $_POST['password']);

Und führen Sie schließlich die vorbereiteten Anweisungen aus. (Hier findet das eigentliche Einfügen statt)

$stmt->execute();

HINWEIS Obwohl dies nicht Teil der Frage ist, rate ich Ihnen dringend, Passwörter niemals im Klartext zu speichern. Stattdessen sollten Sie password_hash verwenden um einen Hash des Passworts zu speichern