sql >> Databasteknik >  >> RDS >> Mysql

Varför fungerar inte det här PHP MySQL-registreringsformuläret?

Nedan är den modifierade koden med förberedd uttalande.

Första steget är att ansluta till databasen. För att göra det måste vi definiera åtkomstdetaljerna.

// 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);

Kontrollera nu anslutningen.

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

Efter detta kör du din fråga. Observera att eftersom detta är ditt personliga projekt, därför använder jag SHA1 som hash av ditt lösenord. För ett större projekt rekommenderar jag att du forskar vidare om hur du säkrar ditt lösenord.

För att köra frågan är det först att förbereda den. Så här gör du.

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

I detta lagrar du uttalandet i $stmt variabel. Frågan har INSERT INTO följt av tabellens namn. I ditt fall är det feedback .

Efter detta fyller du i tabellens fält som ska sparas inom första parentes. I ditt fall blir det (user, password, email) följt av VALUES .

Efter detta lägger du till platshållare för de faktiska värdena med (?, ?, ?) . Observera att det totala antalet ? måste matcha det totala antalet fält i föregående parentes.

Nu måste du binda variablerna till dessa ? . Detta görs av,

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

Observera att "sss" är formaten för värden som passerats. Nedan finns formaten.

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

Så du måste skicka 3 värden, därför har du 3 s , följt av variablerna där du kommer att lagra värdena från HTML-formuläret av,

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

Nu behöver du bara utföra det förberedda uttalandet.

$stmt->execute();

Det är det!

Nedan finns hela koden.

// 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();

Hoppas detta hjälper.



  1. Hibernate Soft Delete med uppdatering Cascade

  2. Hur ställer jag in en kollation med mysqli?

  3. PostgreSQL-motsvarighet till SQLServers NoLock-tips

  4. Anropar ett PHP-skript från en MySQL-utlösare