Postgresql无法使用php pdo确定参数$ 1的数据类型

时间:2017-04-14 07:54:48

标签: php postgresql pdo

我想在查询中打印字符串值。我在数组中定义了变量。 在我执行查询时正在运行的下面的主查询中,我得到结果。

$query = "SELECT count, mahkoy_kod , mahkoy_adi, ilce_id, st_x(st_transform(st_centroid(t2.geom),4326)) as lng,st_y(st_transform(st_centroid(t2.geom),4326)) as lat from 
(SELECT count(*),t1.knt_f_mahkoy_id FROM a.s_all t1                                             
where st_intersects(t1.geom,st_transform(ST_GeomFromText( format('POLYGON((%s %s, %s %s, %s %s, %s %s, 
%s %s))', 29.743849487304715, 41.24992343698962, 28.481108398437527, 41.24992343698962, 
28.481108398437527, 40.749326052646055, 29.743849487304715, 40.749326052646055, 
29.743849487304715, 41.24992343698962 ), 4326),500000)) 
group by knt_f_mahkoy_id ) t1
join analiz.k_spt_dis_mah_koy t2 on t1.knt_f_mahkoy_id = t2.mahkoy_kod 
where  count > 100";

当我使用php pdo时,我得到的错误是

  

无法确定参数$ 1的数据类型   块引用

这是PHP代码。这里用于运行查询的数据库类。当我使用var_dump打印数据时,我收到错误。我怎么解决这个问题?

$query = "SELECT count, mahkoy_kod , mahkoy_adi, ilce_id, st_x(st_transform(st_centroid(t2.geom),4326)) as lng,st_y(st_transform(st_centroid(t2.geom),4326)) as lat from 
(
  SELECT count(*),t1.knt_f_mahkoy_id FROM a.s_all t1                                             
  where st_intersects(t1.geom,st_transform(ST_GeomFromText( format('POLYGON((%s %s, %s %s, %s %s, %s %s, %s %s))', 
 :long_high, :lat_high, :long_low, :lat_high, :long_low, :lat_low, :long_high, :lat_low, :long_high, :lat_high ), 4326),500000)) 
  group by knt_f_mahkoy_id 
) t1
  join analiz.k_spt_dis_mah_koy t2 on t1.knt_f_mahkoy_id = t2.mahkoy_kod  where  count > 100";

$data = Database::query($query, array("long_high"=>$long_high, "lat_high"=>$lat_high, "long_low"=>$long_low, "lat_low"=>$lat_low));

1 个答案:

答案 0 :(得分:1)

我对postgres并不多,但假设你可以采取另一种方式

SleepCalc.py

这里的想法是提供一个完整的字符串文字POLYGON函数。它既安全又兼容。