Re: multiple params in pg_prepare

From: Date: Tue, 17 Jul 2007 04:11:54 +0000
Subject: Re: multiple params in pg_prepare
References: 1 2  Groups: php.db 
Request: Send a blank email to php-db+get-43796@lists.php.net to get a copy of this message
Nope, still doesn't work...for the moment I'll just preset the variables and use double quotes for the query string. The actual insert statement should be like this: INSERT INTO gtest VALUES (city, GeomFromText('POINT(lon lat)', 4326)) where lon and lat are decimal numbers, and I wanted to replace city, lon, lat with different values each time I insert... It seems like any $var after a single quote, even with \', gets ignored? I also tried using double quotes and escaping $, but doesn't work either.. Thanks though. Doris Chris wrote:
dlamoris@ucla.edu wrote:
Hi, I'm trying to set up a prepared sql statement with 3 parameters and then execute with array of 3 elements (this is to a postgresql database with postgis): $result = pg_prepare($dbconn, "my_query", 'INSERT INTO gtest VALUES ($1, GeomFromText(\'POINT($2 $3)\', 4326))'); $result = pg_execute($dbconn, "my_query", array("phptest", "23", "24")); But when I ran it, it gave me this error: Warning: pg_execute(): Query failed: ERROR: bind message supplies 3 parameters, but prepared statement "my_query" requires 1 in /home/dlamoris/phptest.php on line 15
Probably because of the single quotes around the point() function. Try the heredoc type syntax suggested on http://php.net/pg_prepare: $my_query = <<<MYQRY INSERT INTO gtest VALUES($1, GeomFromText('POINT('$2, $3')', 4326)); MYQRY; Also I'd suggest naming the columns in the first part: insert into gtest(col1, col2, col3) values (....); so it's always in the same order and you're not relying on any behaviour. If you add a column in the middle of your table later on, this is going to break a lot of your code because the columns will be out of order.


« previous php.db (#43796) next »