简体   繁体   English

为什么我的 SQL 查询在 PHP 中不起作用?

[英]Why my SQL query doesnt work in PHP?

So I use ms sql to store latitude and longitude in geography point, in sql I acces that data with:因此,我使用 ms sql 在地理点中存储纬度和经度,在 sql 中我访问该数据:

  SELECT
  location.Lat AS  lat,
  location.long AS long,
  location
  FROM tableName;

And it work good, lat is 20,4706622 long is 44,8132969 and location is some messy hexa number.它运行良好,纬度为 20,4706622,长度为 44,8132969,位置是一些凌乱的十六进制数。

But when I try same in PHP it doesnt work, it's same and is caused by:但是当我在 PHP 中尝试相同时它不起作用,它是相同的并且是由以下原因引起的:

location.lat/long

Here is how my php looks like这是我的 php 的样子

<?php 
session_start();

include "connect.php";

$query = $handler->query("SELECT location.lat AS lat, street  FROM shops");
$row = $query->fetch(PDO::FETCH_OBJ);
$location[0] = $row->lat;
$location[1] = $row->street;
echo json_encode($location);

If I replace location.lat/long with anything else like location, street, city or any other column it will work.如果我将 location.lat/long 替换为位置、街道、城市或任何其他列等其他内容,它将起作用。 I know it is up to location.lat, but I do not know how to format it different.我知道这取决于 location.lat,但我不知道如何将其格式化。 If anything is not clear please ask.如果有什么不清楚的请询问。

If I'm correct you named your fields location.Lat and location.long如果我是正确的,您将您的字段命名为location.Latlocation.long

Change your field names of your table to lat and long将表的字段名称更改为latlong

Then change your query to:然后将您的查询更改为:

SELECT
  Lat AS  lat,
  long AS long,
  location
  FROM tableName;

Another option is to create a view if you can't change the db structure for some reason.如果由于某种原因无法更改数据库结构,另一种选择是创建视图。

According to you this query works:根据您的说法,此查询有效:

SELECT
  location.Lat AS  lat,
  location.long AS long,
  location
  FROM tableName;

If your query works then you could create a view by:如果您的查询有效,那么您可以通过以下方式创建视图:

create view new_table_name as 
SELECT location.Lat AS  lat, location.long AS long, location FROM tableName;

Then change your php script to use the new view as if it was a normal table.然后更改您的 php 脚本以使用新视图,就好像它是一个普通表一样。

Select * from new_table_name

Should give you an idea what just happened.应该让你知道刚刚发生了什么。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM