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

Perché questo modulo di registrazione PHP MySQL non funziona?

Di seguito è riportato il codice modificato con il Prepared Statement.

Il primo passo è connettersi al database. Per farlo, dobbiamo definire i dettagli di accesso.

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

Ora controlla la connessione.

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

Dopodiché, esegui la tua query. Tieni presente che poiché questo è il tuo progetto personale, quindi sto usando SHA1 come hashing della tua password. Per un progetto più grande, ti consiglio di fare ulteriori ricerche su come proteggere la tua password.

Per eseguire la query, prima è prepararla. Ecco come fai.

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

In questo, memorizzi l'estratto conto in $stmt variabile. La query ha INSERT INTO seguito dal nome del tavolo. Nel tuo caso è feedback .

Successivamente, compila i campi della tabella da salvare nella prima parentesi. Nel tuo caso sarà (user, password, email) seguito da VALUES .

Dopodiché aggiungi i segnaposto per i valori effettivi usando (?, ?, ?) . Tieni presente che il conteggio totale di ? deve corrispondere al conteggio totale dei campi nella parentesi precedente.

Ora devi associare le variabili a questi ? . Questo viene fatto da,

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

Tieni presente che "sss" sono i formati dei valori passati. Di seguito sono riportati i formati.

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

Quindi devi passare 3 valori, quindi hai 3 s , seguito dalle variabili in cui memorizzerai i valori dal modulo HTML tramite,

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

Ora devi solo eseguire l'istruzione preparata.

$stmt->execute();

Ecco fatto!

Di seguito è riportato il codice completo.

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

Spero che questo aiuti.