2014-07-11 50 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组件。

相关问题