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

Warum funktioniert dieses PHP-MySQL-Registrierungsformular nicht?

Unten ist der modifizierte Code mit vorbereiteter Anweisung.

Der erste Schritt besteht darin, sich mit der Datenbank zu verbinden. Dazu müssen wir die Zugangsdaten definieren.

// Define Database Credentials
$servername = "localhost"; //Server Name
$username = "KyleHulse"; //Username to the DB
$password = "(my password)"; //Password to the DB
$dbname = "csdb1082"; //Name of the Database

// Create Database Connection
$conn = new mysqli($servername, $username, $password, $dbname);

Überprüfen Sie nun die Verbindung.

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

Danach führen Sie Ihre Abfrage aus. Bitte beachten Sie, dass dies Ihr persönliches Projekt ist und ich daher SHA1 verwende als Hash Ihres Passworts. Für ein größeres Projekt empfehle ich, weiter zu recherchieren, wie Sie Ihr Passwort sichern können.

Um die Abfrage auszuführen, müssen Sie sie zunächst vorbereiten. So geht's.

$stmt = $conn->prepare("INSERT INTO feedback (user, password, email) VALUES (?, ?, ?)");

Darin hinterlegen Sie die Anweisung in $stmt Variable. Die Abfrage hat INSERT INTO gefolgt vom Namen der Tabelle. In Ihrem Fall ist es feedback .

Danach füllen Sie die zu speichernden Felder der Tabelle in der ersten Klammer aus. In Ihrem Fall wird es (user, password, email) sein gefolgt von VALUES .

Danach fügen Sie mit (?, ?, ?) Platzhalter für die eigentlichen Werte hinzu . Bitte beachten Sie, dass die Gesamtanzahl von ? muss mit der Gesamtzahl der Felder in der vorherigen Klammer übereinstimmen.

Jetzt müssen Sie die Variablen an diese ? binden . Dies geschieht durch,

$stmt->bind_param("sss", $user, $password, $email);

Bitte beachten Sie, dass "sss" sind die Formate der übergebenen Werte. Unten sind die Formate.

i - integer
d - double
s - string
b - BLOB

Sie müssen also 3 Werte übergeben, also haben Sie 3 s , gefolgt von den Variablen, in denen Sie die Werte aus dem HTML-Formular speichern werden,

$user = $_POST["user"];
$password = sha1($_POST["password"]); //simplest way to use SHA1 hash.
$email = $_POST["email"];

Jetzt müssen Sie nur noch die vorbereitete Anweisung ausführen.

$stmt->execute();

Das ist es!

Unten ist der vollständige Code.

// Define Database Credentials
$servername = "localhost"; //Server Name
$username = "KyleHulse"; //Username to the DB
$password = "(my password)"; //Password to the DB
$dbname = "csdb1082"; //Name of the Database

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$stmt = $conn->prepare("INSERT INTO feedback (user, password, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $user, $password, $email);

$user = $_POST["user"];
$password = sha1($_POST["password"]); //simplest way to use SHA1 hash.
$email = $_POST["email"];

$stmt->execute();

Hoffe das hilft.