我的目標是將某些點數據插入到MySQL數據庫中。我用一些虛擬數據填充數據庫,它似乎工作。後來,我想檢索這些數據並將其存儲在一個PHP變量中,以便我可以發佈數據的HTML表格。獲取MySQL地理點數據並將結果存儲在PHP變量中
Point X Y P1 1 1 P2 4 2
注意:請不要討厭「藝術」。
我正在使用以下查詢字符串從MySQL數據庫中檢索數據。我在非基於點的數據中使用了這些代碼,並且沒有問題,事情運行得很好。
$sql = "SELECT * FROM " . $this->tableName . " WHERE `OTHER` = '" . $Otherdata . "' AND `POSITION` = 'POINT(1,1)' LIMIT 0, 30 ";
$query = mysqli_query($connection, $sql) or trigger_error("Query Failed: " . mysql_error());
$row = mysqli_fetch_assoc($query);
//print_r($row);//This is empty, or null...which means my $sql line is wrong too...
$Index = 0;
while ($row = mysqli_fetch_array($query, MYSQL_ASSOC)) {
$this->PositionX[$Index] = $row['POSITION']; //Error must be HERE!
$this->PositionY[$Index] = $row['POSITION']; // How do I access .X() or [0] or whatever it
$this->OtherVariable[$Index] = $row['OTHER']; // is that points to the first element of Point?
$Index++;
}
長話短說,這是行不通的。 $ row ['POSITION']不知道我想要X組件。另外$ row爲空或空,這意味着我的$ sql一定是不正確的。
問題1:
什麼是檢查是否一個點(x,y)是等於在DB在MySQL的一些點的正確方法是什麼?
編輯:找到了答案Here。查詢的'POINT(1,1)'部分實際上應該是POINT(1,1),即沒有''字符。正確的路線上寫着:
$sql = "SELECT * FROM " . $this->tableName . " WHERE `OTHER` = '" . $Otherdata . "' AND `POSITION` = POINT(1,1) LIMIT 0, 30 ";
問題2:
什麼是從MySQL數據庫中檢索了一塊點數據,並將其存儲在一個PHP變量X和Y分量,語法? (技術上來說,兩個php變量,一個用於X和一個用於Y,但你知道我的意思。)
另一種說法是,我怎樣才能撥打echo $row['POSITION'];
(對於X和Y獨立)?
有幾件事情:1.從手冊引用(對於函數mysqli_fetch_assoc())):返回表示結果集中獲取行的字符串的關聯數組,其中數組中的每個鍵代表結果集的列之一,或者如果resultset中沒有更多行,則爲NULL。 - 這意味着您的SQL查詢不一定是錯的... 2.您的代碼容易受到「SQL注入」3的影響。要檢查你的查詢是否錯誤,你最好使用'var_dump($ query)'「,並給出結果。 – Max
關於sql注入,我刪除了很多代碼來隔離我的觀點。var_dump謝謝,實際上我有更多的錯誤/錯誤,比我想象的要多,我確實管理了一個修正,發佈在下面,我很樂意發表任何評論。 – mwjohnson