php PDO 和 mysql:如何插入地理点类型?

Posted

技术标签:

【中文标题】php PDO 和 mysql:如何插入地理点类型?【英文标题】:php PDO and mysql: how to insert a geo point type? 【发布时间】:2012-08-16 11:28:14 【问题描述】:

这是我将值插入表的(简化的)代码:

function myInsert($pdo, $sql, $values) 
    $pdo->prepare($sql);
    foreach ($values as $key=>$value) 
        $stmt->bindValue($key, $value);
       


myInsert(
    $pdo,
    'INSERT INTO mytable (a,b,c) VALUES (:a,:b,:c)',
    array(
        ':a' => 'valuea',
        ':b' => 'valueb',
        ':c' => 'valuec',
    )
);

代表 mysql 地理点的正确 'valuea' 可能是什么?

【问题讨论】:

我也想知道这个... 【参考方案1】:

您应该遵循以下格式: POINT( a.latitude, a.longitude )

但由于某种原因,我在这样做时遇到了麻烦,所以我只是重用了:lat:lng,我可以轻松地将它们放入我的数据库中。当我的$newPosition = "POINT(" . $newlat . ", " . $newlng . ")"; 行位于连接之前时,由于某种原因,我收到了一个 HY000(无法连接到数据库)错误,但是有了一点 PDO/SQL,我再也不必为 $newPosition 操心了:

SET lat = :lat, lng = :lng, position = POINT( :lat, :lng)

【讨论】:

【参考方案2】:

使用

GeomFromText('POINT(1 1)')

$valuea = "$lat $lng";

GeomFromText('POINT($valuea)')", //Example: GeomFromText('POINT(31.95635 35.945843)')

并注意表格列的类型,它应该是point的类型。

例子:

CREATE TABLE mytable(
    id int(11) NOT NULL AUTO_INCREMENT,
    geo_point point DEFAULT NULL,
    PRIMARY KEY (id),
)

【讨论】:

不错的尝试,但失败了。 为什么失败,请解释 哦,这很简单。运行一下看看 这是我的错。我盲目地编写代码。谢谢,我会检查并更新它。

以上是关于php PDO 和 mysql:如何插入地理点类型?的主要内容,如果未能解决你的问题,请参考以下文章

PDO mysql:如何知道插入是不是成功

如何使用 PHP PDO 在 mySQL 中插入多行 JSON 对象数据?

如何防止 PHP PDO 通过 jQuery AJAX 插入 MySQL varchar 中的转义字符

使用 PDO 和 PHP 将表单中的数据插入 MySQL 数据库

PHP、PDO、MySQL - 多个 INSERT 容易被注入? [复制]

使用 PDO 从 php 页面将具有更多列的表单数据插入 mysql 数据库