1

我想对 PostgreSQL 数据库进行 php 查询。我在服务器中测试了查询并返回,但是当我在 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..";

?>

我得到“查询没有执行..”;

QUERY 的字符串取自使用 javascript 的 html 页面。

在 Apache2 的 error.log 中,我得到:

PHP 警告:pg_query():查询失败:错误:“Penn”或附近的语法错误\nLINE 1:SELECT (addy).stateabbrev FROM geocode(O

这里有什么意义?

4

2 回答 2

0

清理用户提供的数据:

$input = pg_escape_literal($conn, $input);
$sql = "SELECT (addy).stateabbrev FROM geocode($input);";
于 2013-01-19T15:10:36.477 回答
0

我设法找到了问题,那就是 geocode() 函数中的 $input 变量必须用单引号括起来:

geocode('$input')

:)

于 2013-01-20T11:34:02.177 回答