2

嗨,我正在将纬度、经度值插入数据库。

INSERT INTO `Tracks` (`Latitude`, `Longitude`, `Time`, `Date`, `Speed`) VALUES ('$Latitude', '$Longitude', '$UTC_Time', '$UTC_Date', '$Speed');

gps 接收器倾向于多次发送相同的 lat、long 值。在插入之前,我试图检查最后插入的行的 lat long 列,如果它们匹配,则不应执行查询。否则应该执行查询。我目前无法做到这一点!如果数据库中没有行并且代码检查最后插入的行怎么办?

此外,用户可能会在稍后再次来到同一位置,因此我们不应该检查整个数据库是否有重复的 lat、long 值。那我该怎么做呢?我可以在不检查数据库的情况下在 php 本身中执行此操作吗?有什么想法/建议吗?提前致谢!

4

3 回答 3

1

如果你使用 MySQL,我能想到的一件事就是改变

INSERT INTO跟踪(纬度,经度,时间,速度) > VALUES ('$Latitude', '$Longitude', '$UTC_Time', '$UTC_Date', '$Speed');

进入

INSERT IGNORE INTO跟踪(纬度,经度,时间,速度) > VALUES ('$Latitude', '$Longitude', '$UTC_Time', '$UTC_Date', '$Speed');

PRIMARY KEY使用这两个字段(纬度和经度)设置 a。

由于您指定without checking the db的是我能想到的唯一解决方案。如果您尝试插入一对相等的Langitude, Latitude INSERT IGNORE语句,则将被忽略。

于 2012-04-05T14:16:22.450 回答
0

我可以在不检查数据库的情况下在 php 本身中执行此操作吗?

如果您想检查该值是否已经存在,您将不得不以一种或另一种方式查询数据库。

您可以SELECT对最后一条记录执行 a 并在 PHP 中比较它的值,或者您可以尝试将值插入数据库,如果值已经存在,则选择忽略插入。

于 2012-04-05T14:16:08.480 回答
0

使用替换而不是插入。您必须使列在数据库中必须是唯一的。

此外,您使用 mysql 的方式存在巨大的安全风险。您至少可以使用mysql_real_escape_string。更好的是看一下准备好的陈述。

于 2012-04-05T14:16:38.883 回答