Erreur 'prepare' et 'execute' avec MYSQLI

Fermé
SevenDareK Messages postés 17 Date d'inscription jeudi 14 août 2014 Statut Membre Dernière intervention 26 octobre 2014 - 26 oct. 2014 à 15:18
HikariNoKage_ Messages postés 1 Date d'inscription dimanche 26 octobre 2014 Statut Membre Dernière intervention 26 octobre 2014 - 26 oct. 2014 à 15:52
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 Date d'inscription dimanche 26 octobre 2014 Statut Membre Dernière intervention 26 octobre 2014
26 oct. 2014 à 15:52
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