PostGisl Pdo prepare-insert:引用的函数

时间:2015-01-15 12:10:20

标签: php sql postgresql pdo postgis

我对准备

有疑问
$query_prep_insert['Prepare'] = 'INSERT INTO schema_125."testalogg" (the_geom, OBJECTID_1) VALUES (?,?),(?,?);';

执行

$query_prep_insert['Insert'] = array(
'ST_SetSRID(ST_GeomFromGeoJSON(\'{"type":"Point","coordinates":[961223.18558917,5745885.0742317]}\'), 3395)',
'1540',
'ST_SetSRID(ST_GeomFromGeoJSON(\'{"type":"Point","coordinates":[961201.163454,5745.5677]}\'), 3395)',
'1541'
);

然后,使用PDO我发送查询:

$stmt = $connection->prepare( $query_prep_insert['Prepare'] );
$stmt->execute( $query_prep_insert['Insert'] );

我收到错误

  

PDOStatement :: execute():SQLSTATE [XX000]:内部错误:7错误:   解析错误 - 无效几何提示:“ST”< - 解析错误

引用pdo 会阻止正确解释函数。 有办法逃避或避免引用函数吗?

聚苯乙烯。我无法在以下方面找到解决方案: Using MySQL functions in PHP PDO prepared statements因为我认为这些值未正确连接而且我收到错误“数据类型不匹配”。

谢谢你, Rickyx

1 个答案:

答案 0 :(得分:2)

解决:用这个准备:

$query_prep_insert['Prepare'] = 'INSERT INTO schema_125."testalogg" (the_geom, OBJECTID_1) VALUES ( ST_SetSRID(ST_GeomFromGeoJSON( ? ), 3395), ? );';

只是执行的原始值:

$query_prep_insert['Insert'] = array(
'{"type":"Point","coordinates":[961223.18558917,5745885.0742317]}',
'1541'
);

谢谢弗兰克。