2015-10-17 3 views
0

Je crée un formulaire d'enregistrement et j'utilise les paramètres PHP bind lors de l'insertion de données dans la base de données.Erreur PHP bind_param: Insère des points d'interrogation ('?') Dans la base de données plutôt que des valeurs réelles

$fnameclean = mysqli_real_escape_string($mysqli_conn, $_POST['first_name']); 
$passwordclean = mysqli_real_escape_string($mysqli_conn, hash("sha512", $_POST['password'])); 
$lnameclean = mysqli_real_escape_string($mysqli_conn, $_POST['last_name']); 
$emailclean= mysqli_real_escape_string($mysqli_conn, $_POST['email']); 



$stmt = $mysqli_conn->prepare("INSERT INTO user (firstname, surname, email, password) VALUES ('?', '?', '?', '?')"); 
$stmt->bind_param("ssss", $fnameclean, $lnameclean, $emailclean, $passwordclean); 

$stmt->execute(); 
$stmt->close(); 

Lorsque j'appuie sur le bouton d'envoi, tout ce que je peut voir dans ma base de données sont des points d'interrogation dans les domaines: prenom, nom, email et mot de passe.

Cependant, lorsque je tente d'ajouter des informations à la base de données sans paramètres de liaison, il fonctionne parfaitement bien

Code:

$query1 = "INSERT INTO user (firstname, surname, email, password) VALUES ('$fnameclean', '$lnameclean', '$emailclean', '$passwordclean')";  
$mysqli_conn->query($query1); 

Qu'est-ce que je fais mal ici?

+0

''?'' N'est pas un paramètre de liaison, c'est un littéral de chaîne. – Neil

+0

J'ai trouvé l'erreur, il devrait être comme des valeurs (?,?,?,?) Plutôt que des valeurs ('?', '?', '?', '?') – user5455438

Répondre

0
VALUES (?, ?, ?, ?) 

Pas ' à utiliser dans la requête où vous utilisez ? pour la liaison des paramètres. Donc, votre requête devrait être comme

$stmt = $mysqli_conn->prepare("INSERT INTO user (firstname, surname, email, password) VALUES (?, ?, ?, ?)"); 
+0

Merci beaucoup, cela a fonctionné. – user5455438