[PDO] erreur avec fetchColumn

erreur avec fetchColumn [PDO] - SQL/NoSQL - Programmation

Marsh Posté le 25-06-2014 à 16:53:47    

Bonjour,
 
J'ai une erreur incompréhensible sur une bêêête fonction :

Code :
  1. function getTypeElement($bdd, $id) {
  2. $typePage = "" ;
  3. if($bdd->query('SELECT COUNT(*) FROM `lien_web` WHERE `element_menu_ID` = \''.$id.'\' ')->fetchColumn(0) > 0)
  4.  $typePage = "lienweb" ;
  5. else{
  6.  $idPage = $bdd->query('SELECT `ID` FROM `page` WHERE `element_menu_ID` = \''.$id.'\' ')->fetchColumn(0) ;
  7.  if($bdd->query('SELECT COUNT(*) FROM `menu` WHERE `page_ID` = \''.$idPage.'\'')->fetchColumn(0) > 0) {
  8.   $typePage = "menu" ;
  9.  } else if($bdd->query('SELECT COUNT(*) FROM `circuit` WHERE `page_ID` = \''.$idPage.'\' ')->fetchColumn(0) > 0) {
  10.   $typePage = "circuit" ;
  11.  } else {
  12.   $typePage = "liste" ;
  13.  }
  14. }
  15. return $typePage ;
  16. }


 
Fatal error: Call to a member function fetchColumn() on a non-object in ligne 5
 
Ma fonction renvoie le type de l'élément du menu ayant l'id passé en paramètre, rien de bien sorcier.
 
Ce qui est curieux c'est que ce code fonctionne sans erreur sur un serveur LAMP, par contre sur easy php j'ai l'erreur ci dessus!
 
Encore plus curieux, cette fonction est appelée régulièrement, lors d'un 1ere appel avec une valeur d'id = 1 tout se passe bien, lorsqu'elle est rappeler une 2eme fois avec un $id=206, j'ai immediatement l'erreur!
 
En testant directement les requetes sur ma bdd, les 2 sont ok et renvoie d'alleurs 0!
 
HELP!


Message édité par golumest le 25-06-2014 à 16:54:15
Reply

Marsh Posté le 25-06-2014 à 16:53:47   

Reply

Marsh Posté le 09-07-2014 à 12:01:56    

Le PDO utilise le princide objet, ainsi un fetch voudrat traiter un objet SQL
 
Ici l'erreur vient du faite que ta requete renvoir un resultat que fetchColumn ne peut pas traiter car ce n'est pas un objet.
 
Ensuite, il faut savoir que chaque serveur local ( lamp, xamp, wamp, easyphp) ne propose pas la même gestion d'erreur.
EasyPhp n'est pas permissive, tu n'a peut pas l'erreur qui s'affiche sous lamp car tu n'a pas activé la gestion d'erreur au complet.
 
Ensuite je te conseille soit de recoder en php objet ou si tu ne peux pas au moins d'utiliser des requête preparer tu aura moins de soucis.


---------------
Made you your own sentence without believing that of the others...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed