【问题标题】:ST_GeomFromText in PDO returns error (php)PDO 中的 ST_GeomFromText 返回错误 (php)
【发布时间】:2018-01-13 06:02:23
【问题描述】:

我目前正在为我的 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 个以错误异常捕获结束。谁能告诉我哪里做错了?谢谢

【问题讨论】:

    标签: php mysql pdo sqlgeometry


    【解决方案1】:

    这对我来说是这样的:

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

    【讨论】:

      猜你喜欢
      • 2019-04-06
      • 1970-01-01
      • 2012-03-28
      • 1970-01-01
      • 2019-06-07
      • 2014-08-27
      • 2011-07-24
      • 2021-09-20
      • 2012-05-03
      相关资源
      最近更新 更多