Bonjour à tous!
J'ai un problème avec une fonction préparé pdo depuis des jours et je trouve pas la solution alors je viens vous voir, peut-être que quelqu'un saura m'aider...
Voici la requête :
et voici comment je l'appelle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $this->requetePrepareRecherche = $this->db->getConnexion()->prepare("SELECT tmp.id,get_distance_metres(:latitudePointCentral, :longitudePointCentral, tmp.latitude, tmp.longitude) distance ,COUNT(tmp.id) cpt FROM ( select u.latitude, u.longitude, u.id from UTILISATEUR u inner join COMPETENCES c on u.id=c.id_utilisateur where c.id_metier IN (:competence1) and dateDeNaissance between :date_inf and :date_inf and derniere_connexion between :date_derniereConnexion_inf and :date_derniereConnexion_sup and is_active=1 UNION ALL select u.latitude, u.longitude, u.id from UTILISATEUR u inner join COMPETENCES c on u.id=c.id_utilisateur where c.id_metier IN (:competence2) and dateDeNaissance between :date_inf and :date_inf and derniere_connexion between :date_derniereConnexion_inf and :date_derniereConnexion_sup and is_active=1 UNION ALL select u.latitude, u.longitude, u.id from UTILISATEUR u inner join COMPETENCES c on u.id=c.id_utilisateur where c.id_metier IN (:competence3) and dateDeNaissance between :date_inf and :date_inf and derniere_connexion between :date_derniereConnexion_inf and :date_derniereConnexion_sup and is_active=1 )tmp group by tmp.id having distance < :distanceMax order by cpt desc")
et enfin voici ce qu'affiche le print à la fin :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 $this->requetePrepareRecherche->bindValue(':competence1', $competencePrincipalRechercheParam, PDO::PARAM_INT); $this->requetePrepareRecherche->bindValue(':competence2', $competenceSecondaireRecherche1Param, PDO::PARAM_INT); $this->requetePrepareRecherche->bindValue(':competence3', $competenceSecondaireRecherche2Param, PDO::PARAM_INT); $this->requetePrepareRecherche->bindValue(':date_inf', $date_inf, PDO::PARAM_STR); $this->requetePrepareRecherche->bindValue(':date_sup', $date_sup, PDO::PARAM_STR); $this->requetePrepareRecherche->bindValue(':date_derniereConnexion_inf', $date_derniereConnexion_inf, PDO::PARAM_STR); $this->requetePrepareRecherche->bindValue(':date_derniereConnexion_sup', $date_derniereConnexion_sup, PDO::PARAM_STR); $this->requetePrepareRecherche->bindValue(':latitudePointCentral', $latitudeParam, PDO::PARAM_INT); $this->requetePrepareRecherche->bindValue(':longitudePointCentral', $longitudeParam, PDO::PARAM_INT); $this->requetePrepareRecherche->bindValue(':distanceMax', $distanceMaxParam, PDO::PARAM_INT); //les données sont retournée sous forme d'objet; $associe=$this->requetePrepareRecherche->fetchAll(PDO::FETCH_OBJ)or die(print_r($this->requetePrepareRecherche->errorInfo(), TRUE));; // print $associe; print "<br/>".var_dump($associe);
J'ai aussi printé toutes les valeurs passé en param :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Array ( [0] => 00000 [1] => [2] => )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 liste : 20,19,18,17,16,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 liste2 : 20,19,18,17,16,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 liste3 : 20,19,18,17,16,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64 date_inf : 1911-11-11 date_sup : 1993-11-11 date_derniereConnexion_inf : 2011-08-11 date_derniereConnexion_sup : 2011-11-12 latitudePointCentral : 48.8582 longitudePointCentral : 2.29452 distanceMaxParam : 10000000
Mon problème est que cette fonction ne retourne rien, alors que si je la colle dans phpmyadmin en remplaçant les variable par leur valeur et en ajoutant des quote autour des dates j'ai des données qui me sont retournées.
Avant d'utiliser bindvalue j'utilisait execute avec un tableau mais le résultat était le même...
get_distance_metres est une fonction mysql qui fonctionne, pas de problème de ce côté la. Je pense que je dois avoir une erreur au niveau du passage des paramètres mais je vois pas ou...
Quelqu'un aurait une idée? merci d'avance...
Partager