我目前正在为我的 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/