Why not
$sth->bind_param(4, $int);
?
I see 4 placeholders in Your statement.
Do not rely on the values of statement handle attributes (like NUM_OF_PARAMS)
unless You executed the statement handle.
By the way: How does Your code fails? Any error message?
Greetings
Robert
----
Tim Bowden schrieb:
I'm trying to insert a geometry into a postgis enabled postgresql
database, using a postgis function ST_GeomFromText.
The relevant SQL is:
INSERT INTO mytable (description, mypoint) VALUES ('description',
ST_GeomFromText('POINT(<int> <int>)', <int>);
where <int> is an integer specifying point coordinates and SRID (Spatial
Reference Id) respectively.
I've tried the following code, but it fails.
#!/usr/bin/perl -wT
use DBI;
use strict;
my $srid = 4326;
my $dbname = "test";
my $dbuser = "tim";
my $coord = 7653;
my $dbh = DBI->connect("dbi:Pg:dbname=$dbname;host=127.0.0.1","$dbuser")
or die "can't connect to the db: $!\n";
# The mygeom table has been set up for postgis point geometries...
my @desc = qw/ desc1 next_desc point3 location4 /;
my $sth = $dbh->prepare("INSERT INTO mygeom (description, mypoint)
VALUES (?, ST_GeomFromText('POINT(? ?)', ?))");
my $params = $sth->{NUM_OF_PARAMS};
print "\nNumber of identified params: $params\n";
for (@desc){
$sth->bind_param(1, $_);
$sth->bind_param(2, $coord);
$sth->bind_param(3, $coord);
$sth->execute();
}
*******
$sth->{NUM_OF_PARAMS} reports 2 params. The error message is:
Cannot bind unknown placeholder 3 (3) at ./postgis.load line 20.
It would seem the two ?'s in the 'POINT(? ?)' argument to the
ST_GeomFromText function are not being identified as placeholders.
Any suggestions as to how I should approach this?
Thanks,
Tim Bowden