GeoGraphGIS
GeoGraphGIS

Reputation: 66

PostgreSQL query works but not with php

I want to make a php query to a PostgreSQL database. I tested the query in the server and returns, but when I try it in php:

<?php

//Check the input
if (!isset($_POST['variable']))
echo "Address not selected";

$input = $_POST['variable'];
//$input = ucfirst(trim($_POST['variable']));
//echo $input;


$conn = pg_connect("host=localhost port=5432 dbname=geocoder user=postgres");
if (!$conn)
echo "Could not connect to server..";

$sql = "SELECT (addy).stateabbrev FROM geocode($input);";
$result = pg_query($conn, $sql);

if  (!$result)
    echo "Query did not executed..";

?>

I get that "Query did not executed..";

The string for the QUERY is taken from a html page using javascript.

In the error.log of Apache2 i get:

PHP Warning: pg_query(): Query failed: ERROR: syntax error at or near "Penn"\nLINE 1: SELECT (addy).stateabbrev FROM geocode(O

What can be the point here?

Upvotes: 1

Views: 1043

Answers (2)

GeoGraphGIS
GeoGraphGIS

Reputation: 66

I managed to find the problem, which is the fact that $input variable from geocode() function, must be surrounded by single quotes:

geocode('$input')

:)

Upvotes: 0

Clodoaldo Neto
Clodoaldo Neto

Reputation: 125284

Sanitize the user supplied data:

$input = pg_escape_literal($conn, $input);
$sql = "SELECT (addy).stateabbrev FROM geocode($input);";

Upvotes: 0

Related Questions