Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum 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 17/06/2011, 09h57   #1
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
Par défaut Erreur Like, count(*) dans un et pas l'autre server

Bonjour.

Dans un serveur, j'ai cette erreur ci (LAMP):
Fatal error: Call to a member function fetch_array() on a non-object

le code concerné est :
Code :
1
2
$resultat=$connexion->query("SELECT count(*) FROM ".constant('BDD').".`ori_images` WHERE `desc` LIKE '%$rech%' AND `cat` LIKE '%$cat%'");
$nb_total = $resultat->fetch_array();
Et dans un autre, aucune erreur (WAMP)

ça semble être le LIKE quand je le mets pour deux.
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 10h48   #2
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
Par défaut DESC

Bonjour,

en ayant vu ton code la première fois j'ai cru voir une erreur avec 'desc' qui ressemble étrangement à desc pour désigner le tri par ordre décroissant mais qui semblerait être un élément de ta table. Aussi est ce que LAMP ne prendrait pas en compte les quotes et du coup verrait desc comme une erreur?
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 11h02   #3
Membre actif
 
Homme Fabrice Agnello
Développeur informatique
Inscription : octobre 2010
Messages : 76
Détails du profil
Informations personnelles :
Nom : Homme Fabrice Agnello
Âge : 39
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : octobre 2010
Messages : 76
Points : 161
Points : 161
Bonjour,

vous devriez séparer la construction de la requête de son exécution et l'afficher pour l'exécuter dans un requeteur (mysql en ligne de commande ou phpmyadmin).
Cela vous permettrait d'éliminer la piste d'une erreur de requête.

Code :
1
2
3
4
$query = "SELECT count(*) FROM ".constant('BDD').".`ori_images` WHERE `desc` LIKE '%$rech%' AND `cat` LIKE '%$cat%'";
echo $query;die();
$resultat=$connexion->query($query);
$nb_total = $resultat->fetch_array();
Par ailleurs, vous semblez utiliser mysqli, donc vous devriez tester le résultat de votre requete (qui ici doit être false) et voir quel est le message d'erreur (avec $connexion->error()).

enfin, vous devriez échapper vos chaines de caractères avec real_escape_string.

HTH.
Agnello Fabrice est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 16h38   #4
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
Retrokiller069, "desc" est un champs dans ma base qui porte ce nom. C'est bien possible pour les Quotes, je vais faire le test.

à '%rech%' et '%cat%', j'ai enlevé les ' et ', ça me donne la même chose au deux.

Si j'enlève tout à partir de WHERE ça donne ceci :
Code :
1
2
SELECT count(*) FROM ori_images
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in
Agnello Fabrice, l'erreur est différente écrit de cette manière et je l'ai sur les deux serveurs cette fois. C'est mysqli que j'utilise.

C'est l'erreur que ça indique sans autre détail :
Code :
SELECT count(*) FROM coop_coop.`ori_images` WHERE `desc` LIKE '%%' AND `cat` LIKE '%%'
Merci pour vos interventions; c'est apprécié.

Citation:
Envoyé par Agnello Fabrice Voir le message
Bonjour,

Code :
1
2
3
4
$query = "SELECT count(*) FROM ".constant('BDD').".`ori_images` WHERE `desc` LIKE '%$rech%' AND `cat` LIKE '%$cat%'";
echo $query;die();
$resultat=$connexion->query($query);
$nb_total = $resultat->fetch_array();
HTH.
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 16h50   #5
Membre confirmé
 
Homme Benjamin
Consultant informatique
Inscription : août 2007
Messages : 160
Détails du profil
Informations personnelles :
Nom : Homme Benjamin
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2007
Messages : 160
Points : 248
Points : 248
Sans précisions sur la version de MySQL :
* 3 / 4.0 / 4.1 : http://dev.mysql.com/doc/refman/4.1/...ved-words.html
* 5.0 : http://dev.mysql.com/doc/refman/5.0/...ved-words.html
* 5.1 : http://dev.mysql.com/doc/refman/5.1/...ved-words.html
* 5.5 : http://dev.mysql.com/doc/refman/5.5/...ved-words.html
* 5.6 : http://dev.mysql.com/doc/refman/5.6/...ved-words.html

En clair, "desc" est un mot réservé, et il faut donc éviter de l'utiliser ...
bhamp0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 16h56   #6
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
Citation:
Envoyé par bhamp0 Voir le message
Sans précisions sur la version de MySQL :
* 3 / 4.0 / 4.1 : http://dev.mysql.com/doc/refman/4.1/...ved-words.html
* 5.0 : http://dev.mysql.com/doc/refman/5.0/...ved-words.html
* 5.1 : http://dev.mysql.com/doc/refman/5.1/...ved-words.html
* 5.5 : http://dev.mysql.com/doc/refman/5.5/...ved-words.html
* 5.6 : http://dev.mysql.com/doc/refman/5.6/...ved-words.html

En clair, "desc" est un mot réservé, et il faut donc éviter de l'utiliser ...
C'est la version PHP Version 5.2.12, je l'utilise ailleurs et je n'ai pas de problème. Mais, je vais essayer de changer ça pour un autre champs.

mysql : Client API version 5.0.92

J'ai tout même supprimer tout ce qui suit après WHERE sans utiliser le champs DESC et j'obtiens l'erreur quand même.

Code :
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in
en mettant juste ceci :

Code :
1
2
3
4
$query = "SELECT count(*) FROM ori_images ";
echo $query;
$resultat=$connexion->query($query);
$nb_total = $resultat->fetch_array();
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 17h30   #7
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
Merci pour vos interventions. ça me remets en lumière des détails que je devrait tenir compte.

Pour mon problème, c'était dû à un champ qui manquait qui s'appelait "cat" voulant dire catégories.
dancom5 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 19h26.


 
 
 
 
Partenaires

Hébergement Web