0

For the following line, I received an error in my PHP page, but the query is OK when I run it from pgmyadmin.

I am trying to insert a point into my PostGIS from PHP which contains name, address and a geometric point. Here, p_id is primary key and it is an integer.

$sql = "INSERT INTO app (p_id, p_fname, p_lname, p_saddr, p_caddr, the_geom) VALUES(intval($p_id), $fname, $lname, $street, $city, ST_GeomFromText(POINT($long $lat), 4326))";
$result = pg_query($dbh, $sql);

Error:

Warning: pg_query() [function.pg-query]: Query failed: ERROR: syntax error at or near "," LINE 1: ...me, p_saddr, p_caddr, the_geom) VALUES(intval(5), , , , , ST... ^ in /Applications/XAMPP/xamppfiles/htdocs/HostMobileApp/requestProcessor.php on line 66
Error in SQL query: ERROR: syntax error at or near "," LINE 1: ...me, p_saddr, p_caddr, the_geom) VALUES(intval(5), , , , , ST... ^

2 Answers 2

3

This a really a duplicate of your previous question, and my answer is the same. Don't mix SQL and WKT! Use ST_MakePoint if you need to embed parameters into an SQL statement.

$sql = 'INSERT INTO app(p_id, p_fname, p_lname, p_saddr, p_caddr, the_geom) '
 . 'VALUES(intval($p_id), $fname, $lname, $street, $city, ST_SetSRID(ST_MakePoint($long, $lat), 4326))';
$result = pg_query($dbh, $sql);
1
  • The vote is a +1 from me for seeing the larger problem with his SQL that I didn't understand, and catching the duplicate questions. May 2, 2012 at 0:39
1

It looks like you are having a problem with quotes when referring to your column names. Here is the documentation for an Insert Query from the PostgreSQL website: Documentation: Manuals: Insert

The gist is that when you are stating an Insert Into clause, where you name the column names, you do not put these in quotes. You only put the values you are inserting in single quotes, or in your case, you use the variables so no quotes are necessary.

I think your structure should look like this:

$sql = "INSERT INTO app (p_id, p_fname, p_lname, p_saddr, p_caddr, the_geom)
     VALUES(intval($p_id), $fname, $lname, $street, $city, ST_GeomFromText(POINT($long $lat), 4326))";  

$result = pg_query($dbh, $sql);
4
  • I tried but it also does not work.. same error..Warning: pg_query() [function.pg-query]: Query failed: ERROR: syntax error at or near "," LINE 1: ...me, p_saddr, p_caddr, the_geom) VALUES(intval(5), , , , , ST... ^ in /Applications/XAMPP/xamppfiles/htdocs/HostMobileApp/requestProcessor.php on line 66 Error in SQL query: ERROR: syntax error at or near "," LINE 1: ...me, p_saddr, p_caddr, the_geom) VALUES(intval(5), , , , , ST... ^
    – Shahjalal
    May 1, 2012 at 23:54
  • Can you copy in the code you have now? It is not showing the error being the variable now, it is showing there is a problem with a comma in your string. I cannot tell where it is though. The error is now "syntax error at or near ','". Maybe edit your question and paste the query string in at the bottom. May 2, 2012 at 0:02
  • i edited my question.. may be this will help u now to help me.
    – Shahjalal
    May 2, 2012 at 0:12
  • At this point, I have to defer to @MikeToews, who posted another answer to this question. I would take the suggestion he gave in the Previous Question, and use that to correct your SQL query that you are passing with the PHP here. May 2, 2012 at 0:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.