Nous sommes actuellement le 06 Juil 2026, 10:59

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 6 message(s) ] 
Auteur Message
MessagePublié: 27 Déc 2005, 22:33 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
J'essais d'utiliser mysqli pour faire des requêtes paramétrés, mais jusqu'à date ça me semble plutot ordinaire comme objet.

Mon dernier problème c'est:
Code :
$query = "INSERT INTO utilisateur (Nom,Prenom,MotDePasse,Courriel,NomAfficher) VALUES(?,?,?,?,?)";
$stmt = $mysqli->prepare($query);
$stmt->bind_param('sssss', $str_Nom, $str_Prenom, $str_MotDePasse, $str_Courriel, $str_NomAAfficher);

J'obtiens l'avertissement suivant:
Code :
Warning: mysqli_stmt::bind_param() [function.bind-param]: Number of variables doesn't match number of parameters in prepared statement in x on line y

Pourtant j'ai bien 5 paramètres partout. Je nomme 5 colonnes dans le insert (ma table en sql comporte 4 autres colonnes, 1 qui a un auto increments et les 3 autres sont nullable), j'ai 5 placehoders dans le value et je bind 5 paramêtres. J'utilise php 5.0.3 et je ne peux pas utiliser une version suppérieure (j'utilise dbg pour faire du vrai debug). La connexion a lieu avec succès.

Quelqu'un voit quelque chose qui cloche ?

_________________
This posting is provided "AS IS" with no warranties, and confers no rights!
©2006 - 2014 Jump


Dernière édition par Jump le 28 Déc 2005, 14:21, édité 1 fois.

Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 28 Déc 2005, 08:31 
Hors-ligne
Administrateur
Administrateur
Avatar de l’utilisateur

Inscription : 10 Déc 2001, 17:54
Message(s) : 1947
Localisation : Saint-Émile
Vous avez 6 paramètres :

1 : 'sssss',
2: $str_Nom,
3: $str_Prenom,
4: $str_MotDePasse,
5: $str_Courriel,
6: $str_NomAAfficher

Ce qui donne l'erreur.

_________________
Nicolas Ross
Administrateur du site Micro.Info,
Ingénieur, CyberCat


Dans la plupart des pays la vente de choses nocives, comme des drogues, est interdite.
Alors pourquoi les gens peuvent vendre les logiciels de Microsoft et rester impunis ?


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 28 Déc 2005, 09:45 
Hors-ligne
Modérateur
Modérateur
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 15:10
Message(s) : 3551
Localisation : Beauport, Québec
Non le premier paramètre n'est pas un champ, mais une valeur qui contient les types des paramètres à suivre, ici c'est String-String-String-String-String, donc sssss

Je dirait plutôt que le problème c'Est

Code :
$stmt = $mysqli->prepare($querry);


qui devrait être
Code :
$stmt = $mysqli->prepare($query);

_________________
Procyon,
Modérateur de la section Trouvailles


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 28 Déc 2005, 10:38 
Hors-ligne
Administrateur
Administrateur
Avatar de l’utilisateur

Inscription : 10 Déc 2001, 17:54
Message(s) : 1947
Localisation : Saint-Émile
Procyon a écrit:
Non le premier paramètre n'est pas un champ, mais une valeur qui contient les types des paramètres à suivre, ici c'est String-String-String-String-String, donc sssss

Ha, ça je savais pas. Je me sers de PEAR::DB, et l'array que je passe comporte un nombre égale d'éléments que de placeholders. Ce sont les placeholders qui font la différence : ? ou !

_________________
Nicolas Ross
Administrateur du site Micro.Info,
Ingénieur, CyberCat


Dans la plupart des pays la vente de choses nocives, comme des drogues, est interdite.
Alors pourquoi les gens peuvent vendre les logiciels de Microsoft et rester impunis ?


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 28 Déc 2005, 14:20 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
Procyon a écrit:
Je dirait plutôt que le problème c'Est
Code :
$stmt = $mysqli->prepare($querry);

qui devrait être
Code :
$stmt = $mysqli->prepare($query);

Oups, ça c'est une erreur de retranscription. Dans mon code le query est directement dans le prepare. J'ai ajouté une variable pour rendre ça plus claire ici. Si on passe un paramètre vide, $stmt n'aurait pas été un objet et le bind_parameter aurait lever une erreur et non un warning.

_________________
This posting is provided "AS IS" with no warranties, and confers no rights!
©2006 - 2014 Jump


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 28 Déc 2005, 18:05 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
Je crois avoir résolu mon problème. J'ai fouttu Wamp à la porte et j'ai tout installé par moi même. Avec Apache 1.3.34, mySQL 4.1.16 et php 5.0.3 ça fonctionne très bien.

_________________
This posting is provided "AS IS" with no warranties, and confers no rights!
©2006 - 2014 Jump


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 6 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 4 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  
cron
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site