2014-07-11 75 views
1

我的目標是將某些點數據插入到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獨立)?

+0

有幾件事情:1.從手冊引用(對於函數mysqli_fetch_assoc())):返回表示結果集中獲取行的字符串的關聯數組,其中數組中的每個鍵代表結果集的列之一,或者如果resultset中沒有更多行,則爲NULL。 - 這意味着您的SQL查詢不一定是錯的... 2.您的代碼容易受到「SQL注入」3的影響。要檢查你的查詢是否錯誤,你最好使用'var_dump($ query)'「,並給出結果。 – Max

+0

關於sql注入,我刪除了很多代碼來隔離我的觀點。var_dump謝謝,實際上我有更多的錯誤/錯誤,比我想象的要多,我確實管理了一個修正,發佈在下面,我很樂意發表任何評論。 – mwjohnson

回答

4

我最終使用了As關鍵字。

"SELECT X(`POSITION`) as Xpos, Y(`POSITION`) as Ypos, `Other1`, `Other2`, `Other3`, `Other4` FROM " . $this->tableName . " WHERE `Other4` = '" . $Otherdata . "; 

這讓我只訪問Point的一個組件。

$myXpos = $row['Xpos']; 
$myYpos = $row['Ypos']; 

因此獨立地訪問Point數據類型對象的X和Y組件。

相關問題