gpt4 book ai didi

php - 准备在数据库中插入 ST_GeomFromText 的数据 (Codeigniter + MySql)

转载 作者:行者123 更新时间:2023-11-28 23:16:42 24 4
gpt4 key购买 nike

我在使用 Codeigniter 将数据插入数据库时​​遇到问题。我有这个测试种子功能

$latitude = rand(45.500000 * 1000000, 46.400000 * 1000000) / 1000000;
$longitude = rand(13.600000 * 1000000, 15.500000 * 1000000) / 1000000;
$data = array(
'unique_id' => '12319334',
'latitude' => $latitude,
'longitude' => $longitude,
'coordinates' => "ST_GeomFromText('POINT($latitude $longitude)')",
);
$locationId = $this->Locations->insert($data);

这是模型中的插入函数

function insert($data, $tableName = "")
{
if ($tableName == "") {
$tableName = $this->table;
}
$this->db->insert($tableName, $data);
return $this->db->insert_id();
}

这是一个发生的查询

INSERT
INTO
`locations`(
`unique_id`,
`latitude`,
`longitude`,
`coordinates`
)
VALUES(
'ZTE1NGY2YT',
45.990292,
14.948462,
'ST_GeomFromText(\'POINT(45.582315 14.821478)\')'
)

我得到的错误是无法从您发送到 GEOMETRY 字段的数据中获取几何对象

在 phpmyadmin 中进行一些测试后,我发现插入此类数据的查询应该如下所示

INSERT
INTO
`locations`(
`unique_id`,
`latitude`,
`longitude`,
`coordinates`
)
VALUES(
'ZTE1NGY2YT',
45.990292,
14.948462,
ST_GeomFromText('POINT(45.582315 14.821478)')
)

所以我需要以某种方式去掉 'ST_GeomFromText(\'POINT(45.582315 14.821478)\')' 行中的单引号 (')

有人知道如何正确准备数据(不执行直接查询,因为要存储更多数据)以便正确处理数据吗?

如果您需要任何其他信息,请告诉我,我会提供。谢谢!

最佳答案

原来是这样

$this->db->set('coordinates', "ST_GeomFromText('POINT($latitude $longitude)')", false);

所以我对我的模型做了一个小修改(我知道它不漂亮但现在可以用了)并插入了数据..

function insert($data, $tableName = "")
{
foreach ($data as $key => $value) {
if ($key == 'coordinates') {
$this->db->set('coordinates', $value, false);
unset($data['coordinates']);
}
}
if ($tableName == "") {
$tableName = $this->table;
}
$this->db->insert($tableName, $data);
return $this->db->insert_id();
}

关于php - 准备在数据库中插入 ST_GeomFromText 的数据 (Codeigniter + MySql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43548567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com