簡體   English   中英

如何使用 PHP 從 MySQL 數據庫中讀取幾何數據類型

[英]How to read geometry data type from MySQL database using PHP

我在 MySQL 中有一個存儲多邊形的表。 我可以使用以下查詢在命令行上讀回:

mysql> SELECT polygonid, AsText(thepolygon) FROM polygons;
+-----------+----------------------------------------------------------------------------------------------------------------+ | polygonid | AsText(thepolygon) |
+-----------+----------------------------------------------------------------------------------------------------------------+ | 1 | POLYGON((36.96318 127.002881,37.96318 127.002881,37.96318
128.002881,36.96318 128.002881,36.96318 127.002881)) | +-----------+----------------------------------------------------------------------------------------------------------------+ 1 row in set, 1 warning (0.02 sec)

當我嘗試使用相同的查詢在 PHP 中讀取此內容時,polygonid 正確返回,但 thepolygon 返回為空:

$query = "SELECT polygonid, AsText(thepolygon) FROM polygons";
$result = mysqli_query($con, $query);

while ($row = mysqli_fetch_array($result)) {
    var_dump($row['polygonid']);
    var_dump($row['thepolygon']);

    [...]

結果是

string(1) "1" NULL

意味着 'thepolygon' 返回為 NULL,但 'polygonid' 返回就好了。

如果我將查詢更改為

SELECT polygonid, thepolygon FROM polygons

然后我取回二進制數據:

string(1) "1" string(97)
"�t{I{B@�1�3/�_@�t{I�B@�1�3/�_@�t{I�B@��`@�t{I{B@��`@�t{I{B@�1�3/�_@"
string

就好像 astext() 不起作用一樣。 我究竟做錯了什么?

感謝您提供任何意見!

看起來這可能只是因為您沒有給AsText()選擇一個可以從 PHP 數組中提取的別名。

如果您打印出$row您可能會看到您的數組沒有thepolygon鍵。

你試過這個嗎?

$query = "SELECT polygonid, AsText(thepolygon) AS thepolygon FROM polygons";

它在命令行上工作,因為您只是打印出查詢中選擇的任何內容,但在 PHP 中您正在嘗試打印出數組鍵 - 即所選字段的名稱。 您的 MySQL 查詢沒有選擇名為thepolygon的字段,因此它也不存在於數組中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM