sql >> Database teknologi >  >> RDS >> Mysql

Hvorfor virker denne PHP MySQL registreringsformular ikke?

Nedenfor er den ændrede kode med Forberedt erklæring.

Første trin er at oprette forbindelse til databasen. For at gøre det skal vi definere adgangsoplysningerne.

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

Tjek nu forbindelsen.

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

Herefter kører du din forespørgsel. Bemærk venligst, at da dette er dit personlige projekt, derfor bruger jeg SHA1 som hashing af din adgangskode. For et større projekt, anbefaler jeg at undersøge nærmere, hvordan du sikrer din adgangskode.

For at køre forespørgslen skal du først forberede den. Sådan gør du.

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

I denne gemmer du sætningen i $stmt variabel. Forespørgslen har INSERT INTO efterfulgt af tabellens navn. I dit tilfælde er det feedback .

Herefter udfylder du tabellens felter, der skal gemmes i første parentes. I dit tilfælde vil det være (user, password, email) efterfulgt af VALUES .

Herefter tilføjer du pladsholdere for de faktiske værdier ved hjælp af (?, ?, ?) . Bemærk venligst, at det samlede antal ? skal svare til det samlede antal felter i den forrige parentes.

Nu skal du binde variablerne til disse ? . Dette gøres af,

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

Bemærk venligst, at "sss" er formaterne for værdier, der er bestået. Nedenfor er formaterne.

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

Så du skal sende 3 værdier, derfor har du 3 s , efterfulgt af variablerne, hvor du vil gemme værdierne fra HTML-formularen ved,

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

Nu skal du bare udføre den forberedte erklæring.

$stmt->execute();

Det var det!

Nedenfor er den fulde kode.

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

Håber dette hjælper.



  1. Python, MySQL _mysql_exceptions.ProgrammingError:(1064, 'Du har en fejl i din SQL-syntaks

  2. Oracle Bankers regel

  3. Mikro-orm fejl:adgangskodegodkendelse mislykkedes for bruger postgres

  4. mysql gruppering efter uge