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

0

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

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

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

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

На этом этапе я успешно отправляю, а также получаю и показываю маршруты, которые я отправил. Но когда я изменил его на стиль PDO, все работает отлично, за исключением этого запроса, я получил "http-ошибка 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 заканчиваются ошибкой catch. Может ли кто-нибудь сказать мне, где я сделал это неправильно? Спасибо

Теги:
pdo
sqlgeometry

1 ответ

0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню