Mysql
 sql >> Base de données >  >> RDS >> Mysql

Pourquoi ce formulaire d'inscription PHP MySQL ne fonctionne-t-il pas ?

Vous trouverez ci-dessous le code modifié avec la déclaration préparée.

La première étape consiste à se connecter à la base de données. Pour ce faire, nous devons définir les détails d'accès.

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

Vérifiez maintenant la connexion.

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

Après cela, vous exécutez votre requête. Veuillez noter que puisqu'il s'agit de votre projet personnel, j'utilise donc SHA1 comme le hachage de votre mot de passe. Pour un projet plus important, je vous recommande de rechercher plus avant comment sécuriser votre mot de passe.

Pour exécuter la requête, il faut d'abord la préparer. C'est comme ça que tu fais.

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

Dans celui-ci, vous stockez la déclaration dans $stmt variable. La requête a INSERT INTO suivi du nom de la table. Dans votre cas, il s'agit de feedback .

Après cela, vous remplissez les champs du tableau à enregistrer dans la première parenthèse. Dans votre cas ce sera (user, password, email) suivi de VALUES .

Après cela, vous ajoutez des espaces réservés pour les valeurs réelles en utilisant (?, ?, ?) . Veuillez noter que le nombre total de ? doit correspondre au nombre total de champs dans la tranche précédente.

Maintenant, vous devez lier les variables à ces ? . Ceci est fait par,

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

Veuillez noter que "sss" sont les formats des valeurs passées. Voici les formats.

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

Vous devez donc passer 3 valeurs, donc vous avez 3 s , suivi des variables où vous stockerez les valeurs du formulaire HTML par,

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

Il ne vous reste plus qu'à exécuter l'instruction préparée.

$stmt->execute();

C'est tout !

Ci-dessous le code complet.

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

J'espère que cela vous aidera.