【发布时间】:2013-01-03 03:26:46
【问题描述】:
我想对 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
这里有什么意义?
【问题讨论】:
-
您应该在 SQL 中使用占位符而不是插值,并且您应该验证/清理输入。
-
您遇到了 SQL 注入。立即了解这一点:bobby-tables.com
-
使用 $input = pg_escape_string($_POST['variable']);没有帮助
-
您可能想考虑在您的代码中添加错误检查。它在 php 中非常简单,并且在事情不工作时非常有用。假设你已经得到了一个输入,假设你已经连接到数据库,并且假设你得到了一个结果,这些都是错误的形式。每次检查是否有错误。
标签: postgresql php