Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

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... ^

Thanks, in advance.

share|improve this question

2 Answers 2

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);
share|improve this answer
    
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 '12 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. –  Get Spatial May 2 '12 at 0:02
    
i edited my question.. may be this will help u now to help me. –  Shahjalal May 2 '12 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. –  Get Spatial May 2 '12 at 0:34

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);
share|improve this answer
    
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. –  Get Spatial May 2 '12 at 0:39

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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