我在使用Codeigniter將數據插入數據庫時遇到問題。我有這個測試種子功能準備在數據庫中插入ST_GeomFromText的數據(Codeigniter + MySql)
$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)\')'
)
錯誤我得到的是Cannot get geometry object from data you send to the GEOMETRY field
查詢在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)\')'
線
任何人有知道如何正確地準備數據(不執行直接查詢,因爲有很多驅除掉單引號(')更多的數據存儲)所以它可以正確處理?
如果您需要任何其他信息,請讓我知道,我會提供。 謝謝!
可能會更好做:'if(isset($ data ['coordinates'])){$ this-> db-> set('coordinates',$ data ['coordinates'],false); unset($ data ['coordinates']);}' – cwallenpoole
好想法! :D thx –