php - PDO 中的 ST_GeomFromText 返回错误 (php)

标签 php mysql pdo sqlgeometry

我目前正在为我的 Android 应用程序编写后端服务,由于这不是我的专长,所以我很困惑为什么会出现此错误。

目的是将位置坐标列表从我的应用程序保存到我的数据库中的几何数据中。起初,我只是使用 mysql_query 与数据库进行通信,但后来我了解了“sql 注入(inject)”,因此我将所有代码转换为使用 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 个最终导致错误异常捕获。谁能告诉我我哪里做错了?谢谢

最佳答案

这对我来说是这样的:

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

关于php - PDO 中的 ST_GeomFromText 返回错误 (php),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48237352/

相关文章:

php - PDO 连接在真实服务器 PDO->__construct/LINUX 与 WINDOWS 服务器上失败

php - 使用 FFMPEG 转换为 FLV 的视频大小为 0

PHP SQL JOIN 语句与相关列

mysql - SO类消息的DB设计以及如何查询?

mysql - 根据表 Y 中的值进行小计的条件总和,与表 X 中的值一起显示。然后根据表 X 中的条件生成总计

mysql - 用户设置的数据库表结构

php - 从 ID 数组获取数据库结果

php - 准备好的查询中的可选参数

php - WordPress 通过 wp_insert_comment() 插入注释

java - 以编程方式从网页源中提取特定数据