Problème avec requête postgresql/postgis

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème avec requête postgresql/postgis

Re: Problème avec requête postgresql/postgis

par moogli » 14 févr. 2012, 19:34

Pour la culture perso :
Question à de balles à tu essayé de délimiter la chaîne de ta requête avec des ' plutôt que des " ?

Parce que la je sais pas trop si les $1 et $2 pose pas de soucis ?

Sinon à tu essayé pdo ? ;)

@+

Re: Problème avec requête postgresql/postgis

par webdev593 » 14 févr. 2012, 17:14

j'ai résolu mon problème.
c'est le fait de stocker la requête préalablement dans une chaine qui posait problème.
J'ai réécrit la requête en remplaçant le $2 directement par le st_... concerné et maintenant ça marche.
Je n'ai pas moyen de mettre le sujet à "résolu" mais il est bel et bien résolu.

Re: Problème avec requête postgresql/postgis

par webdev593 » 14 févr. 2012, 00:14

le $2 je le remplace par le echo de $geomp

Re: Problème avec requête postgresql/postgis

par webdev593 » 14 févr. 2012, 00:03

Quand tu dis que tu as testé en console, tu as réécris la requête telle qu'elle devait être ?
Ou bien tu as fait un echo de la variable et copier/coller ?
j'ai fait un echo de la requête, mais après forcément j'ai du remplacé les paramètres ($1,$2,..) par de vraies valeurs.

Re: Problème avec requête postgresql/postgis

par xTG » 13 févr. 2012, 23:21

Quand tu dis que tu as testé en console, tu as réécris la requête telle qu'elle devait être ?
Ou bien tu as fait un echo de la variable et copier/coller ?

Re: Problème avec requête postgresql/postgis

par webdev593 » 13 févr. 2012, 17:29

Revois l'utilisation de la fonction polygon, ce sont des couples de valeurs et non une suite de valeurs : http://www.postgresql.org/docs/8.2/stat ... metry.html
Merci pour ta réponse xTG, mais ton lien ne concerne pas les données en format WKT, ce qui est mon cas. Le format est bien le bon apparemment car sur console sql ça marche, c'est quand je le fais en php que ça ne marche plus.

Re: Problème avec requête postgresql/postgis

par webdev593 » 13 févr. 2012, 17:07

Salut,

pg_escape_string doit être utilisée sur les données et non sur une requête complète (ou assimilé) donc sur les xmin ymin etc

À tu testé une requête dans une console ? (en affichant les infos dans la page).

@+

Merci moogli pour ta réponse.
C'est entendu pour le pg_escape_string(), mais par contre le problème ne vins pas de là cra justement si j'ai rajouté cette ligne c'était pour fixer mon problème initial, mais ça n'a rien changé.
J'ai oublié ensuite de revenir en arrière.
Et sinon oui, j'ai testé la requête en mode console et ça marche, c'est ça qui est bizare! :/

Re: Problème avec requête postgresql/postgis

par xTG » 13 févr. 2012, 16:42

Revois l'utilisation de la fonction polygon, ce sont des couples de valeurs et non une suite de valeurs : http://www.postgresql.org/docs/8.2/stat ... metry.html

Re: Problème avec requête postgresql/postgis

par moogli » 13 févr. 2012, 16:41

Salut,

pg_escape_string doit être utilisée sur les données et non sur une requête complète (ou assimilé) donc sur les xmin ymin etc

À tu testé une requête dans une console ? (en affichant les infos dans la page).

@+

Problème avec requête postgresql/postgis

par webdev593 » 13 févr. 2012, 16:23

Bonjour,

j'ai un problème lorsque j'essaye d'utiliser la méthode php_prepare().
Je vais devoir faire un grand nombre d'insertions dans ma table (quelques milliers). Pour cela je construit un tableau que je parcours ensuite pour faire les différentes insertions dans ma table à l'aide de la commande pg_prepare(). Sauf que lors de l’exécution du script j'ai des erreurs et aucun enregistrement n'est fait dans la table. Quelqu'un pourrait m'aider s'il vous plait?

Voici le warning:
( ! ) Warning: pg_execute() [function.pg-execute]: Query failed: ERREUR: parse error - invalid geometry HINT: You must specify a valid OGC WKT geometry type such as POINT, LINESTRING or POLYGON in C:\wamp\www\tests\test.php on line 162
Voici un bout de code de la construction de mon tableau:
for($i = 1; $i <= nbelemts; $i++) {

	...
		
		$geom = 'ST_GeometryFromText(\'POLYGON(('.$xmin.' '.$ymin.','.$xmax.' '.$ymin.','.$xmax.' '.$ymax.','.$xmin.' '.$ymax.','.$xmin.' '.$ymin.'))\',2154)';
		$geomp = pg_escape_string($geom);
		
		$tile = array(
		 'id' => $id,
		 'geom' => $geomp
		 
		);
		$data[$i] = $tile;
	}
}  
Et les requêtes d'insertion:
$requete = "insert into table(id_table, the_geom)
			values ($1,$2)";
			
 // prepare query
 $stmt = pg_prepare($dbh, "ps", $requete);
			
 // execute query
 foreach ($data as $key => $value) {
     $result = pg_execute($dbh, "ps", array($value["id"], $value["geom"]));
     if (!$result) {
         die("error in sql query (tile '$key'): " . pg_last_error());
     }
	 else {
		 echo "Opération réussie</p>";
	 }