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 最终导致错误异常捕获。谁能告诉我哪里做错了?谢谢

4

1 回答 1

1

这对我来说是这样的:

    $query = "INSERT INTO geo (`id`, `gps_coordinates`) VALUES (:id, ST_GeomFromText(:point))";
    $values = [
        ':id' => 5,
        ':point' => 'POINT(' . $lat . ' ' . $lng . ')'
    ];
于 2018-01-31T12:25:02.707 回答