我的目标是将某些点数据插入到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