Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/08/2006, 16h56   #1
Membre éprouvé
 
Homme
Inscription : mai 2006
Messages : 694
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 694
Points : 417
Points : 417
Par défaut mysqli_num_rows() --> erreur d'argument

Bonjour,

Je travaille sur un site e-commerce en PHP MySQL et je rencontre un problème avec la fonction mysqli_num_rows().

Voici un code qui fonctionne :
Code :
1
2
3
$query = "select * from paniers";
$result = mysqli_query($connexion, $query);
IF (mysqli_num_rows($result) != 1) {code d'erreur ...}
Par contre quand je fais un update sur la base :
Code :
1
2
3
$query= "update paniers set id_client=12 where id_panier=5";
$result = mysqli_query($connexion, $query);
IF (mysqli_num_rows($result) != 1) {code d'erreur ...}
La fonction mysqli_num_rows génère une erreur :
Code :
Warning: mysqli_num_rows() expects parameter 1 TO be mysqli_result, BOOLEAN given IN C:\MyWebSite\auth.php ON line 69
L'update est pourtant bien réalisé dans la base et 1 et une seule ligne est modifiée. Le code 1 et le code 2 sont écrits de la même façon, pourquoi le premier fonctionne et le deuxième pas? L'argument passé à la fonction est pourtant bien de type 'result' et pas un booléen?

Merci pour votre aide.

webrider
webrider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2006, 17h19   #2
Rédacteur
 
Avatar de Biglo
 
Inscription : juillet 2002
Messages : 537
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : juillet 2002
Messages : 537
Points : 561
Points : 561
Salut,

Regarde bien ce que retourne mysqli_query() : http://fr.php.net/manual/fr/function.mysqli-query.php

Pour les UPDATE, si tu veux savoir le nombre de lignes modifiées, tu peux utiliser mysqli_affected_rows().
Biglo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2006, 17h26   #3
Membre éprouvé
 
Homme
Inscription : mai 2006
Messages : 694
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 694
Points : 417
Points : 417
Merci Biglo,

Mais alors pourquoi dans le premier cas ça marche et pas dans le second? Je vais remplacer la fonction par mysqli_affected_rows(), c'est une fonction à laquelle je n'ai pas pensé!

webrider
webrider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2006, 17h28   #4
Membre éprouvé
 
Homme
Inscription : mai 2006
Messages : 694
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 694
Points : 417
Points : 417
Eh bé non l'erreur retournée est axactement la même! J'ai pourtant lu et relu le code et l'erreur ne me parait pas évidente du tout... c'est certain qu'il y en a une mais où?

Le paramètre fourni à la fonction est pourtant bien de type mysqli_result n'est-ce pas?

webrider
webrider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2006, 17h31   #5
Membre éprouvé
 
Homme
Inscription : mai 2006
Messages : 694
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 694
Points : 417
Points : 417
Ah oui, une question qui pourra peut-être aider à retrouver l'erreur...

Je fais un query donc je devrais recevoir une réponse de type mysqli_result mais il me dit que j'ai fourni un booléen... Donc dans quelles conditions la fonction mysqli_query retourne un booléen?

Merci!

webrider.
webrider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2006, 17h37   #6
Rédacteur
 
Avatar de Biglo
 
Inscription : juillet 2002
Messages : 537
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : juillet 2002
Messages : 537
Points : 561
Points : 561
Tu n'as pas été lire la page que je t'ai suggérée je crois !

Citation:
Valeurs de retour (pour mysqli_query)

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec. Pour SELECT, SHOW, DESCRIBE ou EXPLAIN mysqli_query() retournera un résultat sous la forme d'un objet.
Ensuite, pour mysqli_affected_rows, le seul paramètre est le link de la connexion comme tu peux le voir ici : http://fr.php.net/manual/fr/function...ected-rows.php

La doc officielle de PHP est franchement bien, ça serait dommage de s'en passer
Biglo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2006, 17h38   #7
Membre éprouvé
 
Homme
Inscription : mai 2006
Messages : 694
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 694
Points : 417
Points : 417
Mea culpa! Le fonction mysqli_query renvoit un objet sur un select et un booléen sur un update! Par contre mysqli_affected_rows() attend comme argument non pas un mysqli_result mais bien un mysqli link!

Merci quand même de m'avoir aidé à trouver la réponse!

Citation:
Envoyé par Biglo
Tu n'as pas été lire la page que je t'ai suggérée je crois !
Si si mais trop rapidement désolé!

A bientôt!

webrider
webrider est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h55.


 
 
 
 
Partenaires

Hébergement Web