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:如何插入地理点类型?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PHP PDO 在 mySQL 中插入多行 JSON 对象数据?
如何防止 PHP PDO 通过 jQuery AJAX 插入 MySQL varchar 中的转义字符
使用 PDO 和 PHP 将表单中的数据插入 MySQL 数据库