2

こんにちは私は緯度と経度の値をデータベースに挿入しています。

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

gpsレシーバーは、同じlat、long値を複数回送信する傾向があります。挿入する前に、最後に挿入された行のlat long列を確認しようとしています。一致する場合は、クエリを実行しないでください。それ以外の場合は、クエリを実行する必要があります。私は現在これを行うことができません!データベースに行がなく、コードが最後に挿入された行をチェックする場合はどうなりますか?

また、ユーザーは後で同じ場所に再びアクセスする可能性があるため、データベース全体で緯度と経度の値が重複していないかどうかを確認する必要はありません。では、どうすればよいですか?dbをチェックせずにphp自体でこれを行うことはできますか?何かアイデア/提案はありますか?前もって感謝します!

4

3 に答える 3

1

MySQLを使用している場合、私が考えることができることの1つは変更することです

INSERT INTO(緯度,経度,時間,速度を追跡します) > VALUES ('$Latitude', '$Longitude', '$UTC_Time', '$UTC_Date', '$Speed');

の中へ

INSERT IGNORE INTO(緯度,経度,時間,速度を追跡します) > VALUES ('$Latitude', '$Longitude', '$UTC_Time', '$UTC_Date', '$Speed');

そしてPRIMARY KEY、これら2つのフィールド(緯度と経度)でaを設定します。

あなたが指定したのでwithout checking the db、私が考えることができる唯一の解決策です。Langitude, Latitude INSERT IGNORE等しいペアのステートメントを挿入しようとすると、無視されます。

于 2012-04-05T14:16:22.450 に答える
0

dbをチェックせずにphp自体でこれを行うことはできますか?

値がすでに存在するかどうかを確認する場合は、データベースに何らかの方法でクエリを実行する必要があります。

最後のレコードに対してを実行しSELECT、PHPでその値を比較するか、値をデータベースに挿入してみて、値がすでに存在する場合は、挿入を無視することを選択できます。

于 2012-04-05T14:16:08.480 に答える
0

挿入の代わりにREPLACEを使用します。データベース内で一意である必要がある列を作成する必要があります。

さらに、mysqlの使用方法は大きなセキュリティリスクです。少なくともできることは、mysql_real_escape_stringを使用することです。さらに良いのは、準備されたステートメントを確認することです。

于 2012-04-05T14:16:38.883 に答える