Erreur 'prepare' et 'execute' avec MYSQLI

SevenDareK Messages postés 18 Statut Membre -  
HikariNoKage_ Messages postés 1 Statut Membre -
Bonjour,

Je suis entrain d'essayer d'apprendre a faire un espace membre et pour cela j'ai utilisé ce code :


include ('inc/config.php');

if ($_POST) {
	$nom = htmlspecialchars($_POST['nom'], ENT_QUOTES) ;
	$prenom = htmlspecialchars($_POST['prenom'], ENT_QUOTES) ;
	$pseudo = htmlspecialchars($_POST['pseudo'], ENT_QUOTES) ;
	$email = htmlspecialchars($_POST['email'], ENT_QUOTES) ;
	$password = md5($_POST['password']);

	$session = md5(rand());

	$addMembre = $dbb->prepare('INSERT INTO users SET nom=:nom, prenom=:prenom, pseudo=:pseudo, passe=:passe, email=:email, session=:session');
	$addMembre->execute(array(
		'nom' => $nom,
		'prenom' => $prenom,
		'pseudo' => $pseudo,
		'email' => $email,
		'passe' => $password,
		'session' => $session
	));
}


et le fichier de connexion a la base de données :

<?php
$host = 'localhost';
$user = 'root';
$password = null;
$db = 'membre';

$dbb = mysqli_connect($host,$user,$password,$db) or die("Error " . mysqli_error($dbb)); 
?>


mais quand je rempli mon formulaire html, PHP m'indique une erreur :

Fatal error: Call to a member function execute() on a non-object in .....

Je vous remercie de votre aide par avance,
Cordialement.

1 réponse

HikariNoKage_ Messages postés 1 Statut Membre
 
Bonjour,

Il y a plusieurs erreurs dans votre code pouvant provoquer ce message.

Tout d'abord, votre requête SQL est incorrecte donc la méthode prepare renvoie false d'où l'erreur obtenue (false n'étant pas un objet).

Une requête INSERT est faite de la façon suivante :

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

Ensuite, il semble que vous ayez fait un mixe entre mysqli et PDO. Avec PDO vous pouvez faire ":nom" pour nommer votre variable mais la syntaxe mysqli accepte seulement le "?". Vous devez également utiliser la méthode "bind_param" pour lier vos variables.

Je vous renvoie sur la doc PHP pour plus d'infos sur le fonctionnement de mysqli (vous trouverez également des exemples d'implémentation).

https://www.php.net/manual/fr/mysqli.prepare.php

Cordialement
0