2014-01-11 130 views
-1
$query1 = pg_query('SELECT "id","location",ST_Distance_Sphere(ST_Point(lat,long), ST_Centroid("path"::geometry)) FROM places 
     ORDER BY ST_Distance_Sphere 
     LIMIT 1'); 

echo $query1 

我有一个数据库拉特和长coardinates中,如果我在phpPgAdmin中运行上述查询它给了我想要的结果,但是当通过PHP查询它不是,它给我“资源7“而不是格式查询postgres

我是否正确地格式化了上面的查询?

在此先感谢AJ。

回答

0

我认为问题是echo $ query1

你不能只是回应结果。首先你必须声明一个连接,然后你必须对它做些什么才能打印出来。例如:

$con = pg_connect("host=you_host_db port=5432 dbname=database_name"); 

$query1 = pg_query($con, 'SELECT "id","location",ST_Distance_Sphere(ST_Point(lat,long) as a,ST_Centroid("path"::geometry)) as b FROM places ORDER BY ST_Distance_Sphere LIMIT 1'); 


while ($row = pg_fetch_assoc($query1)) { 
    echo $row['id']; 
    echo $row['location']; 
    echo $row['a']; 
    echo $row['b']; 
} 
+0

谢谢,工作很好。 – AJStyles

0

您可以通过将SQL语句分配给变量,然后回显变量的值来判断SQL语句是否格式正确。您需要回显SQL语句,而不是pg_query()返回的值。

$ cat code/php/test.php 
<?php 
    $sql = 'SELECT "id","location",ST_Distance_Sphere(ST_Point(lat,long), ST_Centroid("path"::geometry)) FROM places ORDER BY ST_Distance_Sphere LIMIT 1'; 
echo $sql; 
$ php code/php/test.php 
SELECT "id","location",ST_Distance_Sphere(ST_Point(lat,long), ST_Centroid("path"::geometry)) FROM places ORDER BY ST_Distance_Sphere LIMIT 1%     ➜ ~ 

参数指向ST_Point()的顺序是“long,lat”,而不是“lat,long”。如果您的原始查询返回正确的结果,我会有点担心。