php - 使用 PHP 从 MySQL 读取空间数据

标签 php mysql pdo

我有一个使用 PHP 和 MySQL 管理兴趣点的网站。我决定研究 MySQL 的空间数据功能,而不是将坐标保存在两个单独的字段中。

我设法使用以下方法将数据插入数据库:

// Update new records
$query = "UPDATE users SET users_address = :uaddress, users_placeid = :uplace, users_coords = POINTFROMTEXT(:location) "; 
$query .= "WHERE users_id = :uid ";
        // echo "Query: $query <br>";
        $stmt = $conn->prepare($query);
        $stmt->execute(array(':uaddress' => $users_address,
                               ':uplace' => $users_placeid,
                             ':location' => $location,
                                  ':uid' => $users_id));
        $result = $stmt;

现在我想使用 PHP 和 PDO 读取数据并获取坐标。网上好像没有使用PDO、PHP、MySQL处理空间数据的例子。

我的正常选择代码是:

$stmt = $conn->prepare("SELECT * FROM users WHERE users_id = :uid ");
$stmt->execute(array(':uid' => $users_id));
$result = $stmt;

if ($result->rowCount() > 0) {

  foreach($result as $row) {

    $users_address           = $row['users_address'];
    $users_placeid           = $row['users_placeid'];
    $users_lat               = $row['x.users_coords'];
     echo "Lat: $users_lat <br>";

  } 
}

我尝试了各种选项,但每个选项都会出错。上面的代码返回:

Notice: Undefined index: x.users_coords

如果可能的话,我想坚持使用 SELECT * 而不是 SELECT users_address 等。

另一个选项是返回使用两个字段作为坐标,但这使得以后进行距离测量等变得更加困难。

知道如何提取纬度和经度吗?

最佳答案

经过一番折腾,我终于解决了这个问题。您必须在 SELECT 字符串中指定空间数据,然后才能轻松读取数据。以下是读取数据的完整代码:

$stmt = $conn->prepare("SELECT *, X(users_coords) AS users_lat, Y(users_coords) AS users_long FROM users WHERE users_id = :uid ");
$stmt->execute(array(':uid' => $users_id));
$result = $stmt;

if ($result->rowCount() > 0) {

  foreach($result as $row) {

    $users_address           = $row['users_address'];
    $users_placeid           = $row['users_placeid'];
    $users_lat               = $row['users_lat'];
    // echo "Lat: $users_lat <br>";
    $users_long              = $row['users_long'];
    // echo "Long: $users_long <br>";
  } 
}

?>

关于php - 使用 PHP 从 MySQL 读取空间数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29052181/

相关文章:

php - 如何在 PHP 中通过一个具有不同条件的 SQL 查询更新多行?

php - 如何在 PDO 函数中使用 CURDATE() 进行多次插入

php - 为什么这不更新信息

javascript - 将 PHP 变量从 HTML 传递到 Javascript

mysql操作结果,替换字符串

java - 使用连接更新 jOOQ 中的行

php - 页面继续加载。 PHP

php - php bindParam() 是否加速批量插入?

php - 使用 usort 和 spaceship 运算符正确排序多维数组

php - MYSQL JOIN 多个表不返回结果