mysql — ST_GeomFromText в PDO возвращает ошибку (php)

В настоящее время я пишу бэкэнд-сервис для своих приложений для Android, и, поскольку это не моя специальность, я не понимаю, почему я получил эту ошибку.

Цель состоит в том, чтобы сохранить список координат местоположения в данных геометрии в моей базе данных из моих приложений. Сначала я просто использую mysql_query для связи с моей базой данных, но затем я узнаю об «инъекциях sql», поэтому я преобразовываю весь свой код в PDO.

Вот мой код с mysql_query:

$submitRoute = mysql_query("INSERT INTO route(id, route) VALUES('$id', ST_GeomFromText('LINESTRING($route)'))");

На этом этапе я успешно отправляю, а также извлекаю и отображаю маршруты, которые я отправил. Но когда я изменил его на стиль PDO, все работает нормально, за исключением того, что в этом запросе я получил «http error 500».

Вот мой код в стиле PDO:

$submitRoute = $conn->prepare("INSERT INTO route(id, route) VALUES(:id, :route");
$result = $submitRoute->execute(array(
':id'       => $_POST['id'],
':route'    => ST_GeomFromText('LINESTRING($_POST['route'])'))
));

Я также попробовал:

$submitRoute = $conn->prepare("INSERT INTO route(id, route) VALUES(:id, :route");
$result = $submitRoute->execute(array(
':id'       => $_POST['id'],
':route'    => ST_GeomFromText('LINESTRING(' . $_POST['route'] . ')'))
));

И это потому, что я подумал, что, возможно, ST_GeomFromText работает только внутри строки запроса:

$submitRoute = $conn->prepare("INSERT INTO route(id, route) VALUES(:id, ST_GeomFromText('LINESTRING(:route)'))");
$result = $submitRoute->execute(array(
':id'       => $_POST['id'],
':route'    => $_POST['route']
));

Но последние 2 заканчиваются в ловушке исключения ошибки. Может кто-нибудь сказать мне, где я сделал это неправильно? Спасибо

0

Решение

Вот как это работает для меня:

    $query = "INSERT INTO geo (`id`, `gps_coordinates`) VALUES (:id, ST_GeomFromText(:point))";
$values = [
':id' => 5,
':point' => 'POINT(' . $lat . ' ' . $lng . ')'
];
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]