PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 03/05/2016 01:09:44

Jessika555
Membre

Comment écrire une varibale php dans une requête

Bonjour tout le monde. Je suis entrain de développer une barre de recherche qui est ""autocomplete". Pour se faire, je récupère les données de la liste des suggestions à partir de ma base de données Postgresql. Le problème que j'ai rencontré c'est que j'ai fait l'union de mes quatre tables et j'intègre une variable php dans la requête. Cette variable dont je stocke le mot entré par l'utilisateur. Donc après que j'ai fait ça, j'ai remarqué que la syntaxe de la requête est bizar. Je sais pas comment je dois intégrer cette variable pour chaque "select". Pour être plus clair, voilà une portion de ma requête:

$query='SELECT
  initcap(coalesce(name,\' \') || \' \' ||coalesce(highway,\' \') || \' \' ||
coalesce(amenity,\' \') || \' \' || coalesce(construction,\' \') || \' \' ||
coalesce(leisure,\' \') || \' \' ||  coalesce("natural",\' \') || \' \' ||
coalesce(operator,\' \') || \' \' || coalesce(place,\' \')) AS address,
  a.gid AS gid,
  a.way AS geom,
  ts_rank_cd(a.ts_road, query) AS rank
FROM planet_osm_roads AS a,
     to_tsquery_partial(\' ' . $userSerach . '\') AS query
WHERE ts_road @@ query
--ORDER BY rank DESC


UNION

SELECT
  initcap(coalesce(name,\' \') || \' \' || coalesce(amenity,\' \') || \' \' ||
     coalesce(aerialway,\' \') || \' \' || coalesce(barrier,\' \') || \' \' ||
     coalesce(building,\' \') || \' \' || coalesce(construction,\' \') || \' \' ||
     coalesce(highway,\' \') || \' \' || coalesce(leisure,\' \') || \' \' ||
     coalesce(man_made,\' \') || \' \' || coalesce("natural",\' \') || \' \' ||
     coalesce(operator,\' \') || \' \' || coalesce(place,\' \') || \' \' ||
     coalesce(service,\' \') || \' \' || coalesce(sport,\' \')) AS address,
  a.gid AS gid,
  a.way AS geom,
  ts_rank_cd(a.ts_line, query) AS rank
FROM planet_osm_line AS a,
     to_tsquery_partial(\' ' . $userSerach . '\') AS query
WHERE ts_line @@ query
--ORDER BY rank DESC

LIMIT 5
';

Merci d'avance. Toute aide est apprécie smile

Dernière modification par Jessika555 (03/05/2016 11:59:00)

Hors ligne

#2 03/05/2016 11:47:27

rjuju
Administrateur

Re : Comment écrire une varibale php dans une requête

Bonjour,

Quelle est votre question exactement ?


Quelques remarques :

dans la première partie il semble que vous oubliez de rouvrir votre chaîne

vous devriez utiliser des requêtes préparées. Cela permettra aussi d'éviter les injections SQL. Voir http://php.net/manual/en/function.pg-prepare.php

Hors ligne

#3 03/05/2016 12:01:49

Jessika555
Membre

Re : Comment écrire une varibale php dans une requête

D'abord, merci pour votre réponse. Comme j'ai dit le problème c'est avec la syntaxe de la requête lorsque j'ai intégré la variable php "$userserach". La deuxième partie après l'expression "Union" change sa syntaxe, c'est-à-dire que j'ai pas bien intégré la variable. J'espère que vous avez bien compris.

Hors ligne

#4 03/05/2016 14:22:30

rjuju
Administrateur

Re : Comment écrire une varibale php dans une requête

Pas du tout.

Je ne vois pas de différence entre

to_tsquery_partial(\' ' . $userSerach . '\') AS query

et

to_tsquery_partial(\' ' . $userSerach . '\') AS query



Ou vous parlez d'autre chose ?

Hors ligne

#5 03/05/2016 14:35:48

Jessika555
Membre

Re : Comment écrire une varibale php dans une requête

Vous m'avez pas bien compris, le problème c'est que lorsque j'intègre cette variable, la syntaxe de la requête se change, j'aimerai vous montrer une capture d'écran mais je peux pas l'intégrer dans le post, si vous voulez bien sûr de me donner votre adresse email pour que je puise vous envoyer la capture. Merci smile

Hors ligne

#6 03/05/2016 15:03:31

rjuju
Administrateur

Re : Comment écrire une varibale php dans une requête

Il suffit de copier l'erreur que vous obtenez.

Hors ligne

#7 03/05/2016 16:01:21

Jessika555
Membre

Re : Comment écrire une varibale php dans une requête

Non y a pas d'erreur, juste les résultats que j'ai obtenu sont bizarres, c'est pour ça je vous dit je dois vous montrer le code php qui contient la requête

Hors ligne

Pied de page des forums