2013-01-19 43 views
1

我想做一個PHP查詢到PostgreSQL數據庫。我測試了服務器中的查詢並返回,但是當我在php中嘗試它時:PostgreSQL的查詢工作,但不是與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 Warning: pg_query(): Query failed: ERROR: syntax error at or near "Penn"\nLINE 1: SELECT (addy).stateabbrev FROM geocode(O

什麼可以點這裏?

+1

您應該在SQL中使用佔位符而不是插值,並且您應該驗證/消毒輸入。 –

+1

您正在經歷SQL注入。現在和第一次瞭解:http://bobby-tables.com/ – hakre

+0

可能的重複[防止PHP中的SQL注入](http://stackoverflow.com/questions/6725520/preventing-sql-injection-in-php ) – hakre

回答

0

我設法找到的問題,這是事實,從地理編碼$輸入變量()函數,必須用單引號包圍:

geocode('$input') 

:)

0

消毒用戶提供的數據:

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