Как добавить массив геоточек через PDO в крейт*

У меня настроен 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();

Как добавить этот набор координат в БД?

Спасибо


person bazbaz    schedule 16.12.2014    source источник


Ответы (2)


GeoPoint не поддерживается как собственный тип в PDO Crate. драйвер еще нет, однако вы можете использовать двойной МАССИВ.

Из документации ящика:

Столбцы с geo_point представлены и вставлены с использованием массива double в следующем формате: [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();
person Christian    schedule 17.12.2014

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();
person Alexander Guz    schedule 16.12.2014