我想在查询中打印字符串值。我在数组中定义了变量。 在我执行查询时正在运行的下面的主查询中,我得到结果。
$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));
答案 0 :(得分:1)
我对postgres并不多,但假设你可以采取另一种方式
SleepCalc.py
这里的想法是提供一个完整的字符串文字POLYGON函数。它既安全又兼容。