0

我已经设置了 crateio,并且使用 PDO 类可以正常工作。

我正在尝试使用绑定将一组地理点放入数据库中。

我试过 foreach 但似乎不起作用,我试过这个 - 这也不起作用。

地理点列设置为 geo_point_array。

$route="[[30.33333, -6.13336],[30.33333, -6.13336]]"; 

$db = new Database; 

$db->Query("insert into geopoints (id, longlat, name) values ('33',?,'pat')"); 

$db->bind(1, $route); 
$db->execute();

如何将这组坐标添加到数据库?

谢谢

4

2 回答 2

2

在 Crate 的 PDO 驱动程序中,还不支持GeoPoint作为本机类型,但是您可以使用双ARRAY

从板条箱文档:

使用以下格式的双精度数组表示和插入带有 geo_point 的列:[lon_value, lat_value]

我还强烈建议对其他值进行参数替换。

use Crate\PDO\PDO;

$route = [[30.33333, -6.13336], [30.33333, -6.13336]];

$db = new PDO('crate:...'); 
$stmt = $db->query("insert into geopoints (id, longlat, name) values (?, ?, ?)"); 

$stmt->bind(1, 33, PDO::PARAM_INT); 
$stmt->bind(2, $route, PDO::PARAM_ARRAY); 
$stmt->bind(3, 'pat', PDO::PARAM_STR); 

$stmt->execute();
于 2014-12-17T08:18:53.107 回答
0

PDO::query返回PDOStatement

$route="[[30.33333, -6.13336],[30.33333, -6.13336]]"; 

//If Dateabase is a sublcass of PDO
//$db = new Database; 
$db = new PDO(...); 

$stmt = $db->query("insert into geopoints (id, longlat, name) values ('33',?,'pat')"); 

$stmt->bind(1, $route, PDO::PARAM_STR); 
$stmt->execute();
于 2014-12-16T11:52:04.367 回答