1

RSS のように 5 分ごとに値を更新する txt ファイルがあります。curl で値を記​​録すると、Mysql に自動的に挿入されます。

しかし問題がある。新しい行を記録すると、txtファイルに古い行が挿入されます。

挿入する PHP 行。

$addvalue = "INSERT INTO city SET cities='$cities', date='$date'";
mysql_query($addvalue)

Mysql ライン

INSERT INTO `city` VALUES (1, 'ISTANBUL', '2013-06-19 18:09:39');
INSERT INTO `city` VALUES (2, 'IZMIR', '2013-06-19 15:06:35');
INSERT INTO `city` VALUES (3, 'LONDON', '2013-06-19 11:17:15');
INSERT INTO `city` VALUES (4, 'BERLIN', '2013-06-18 06:12:21');

新しい行を使用すると、古い行が再び保存されます

INSERT INTO `city` VALUES (1, 'ISTANBUL', '2013-06-19 18:09:39');
INSERT INTO `city` VALUES (2, 'IZMIR', '2013-06-19 15:06:35');
INSERT INTO `city` VALUES (3, 'LONDON', '2013-06-19 11:17:15');
INSERT INTO `city` VALUES (4, 'BERLIN', '2013-06-18 06:12:21');
INSERT INTO `city` VALUES (1, 'ISTANBUL', '2013-06-19 18:09:39');
INSERT INTO `city` VALUES (2, 'IZMIR', '2013-06-19 15:06:35');
INSERT INTO `city` VALUES (3, 'LONDON', '2013-06-19 11:17:15');
INSERT INTO `city` VALUES (4, 'BERLIN', '2013-06-18 06:12:21');
INSERT INTO `city` VALUES (5, 'MOSCOW', '2013-06-20 19:15:33');
INSERT INTO `city` VALUES (6, 'PARIS', '2013-06-20 12:18:32');
INSERT INTO `city` VALUES (7, 'NEW YORK', '2013-06-20 21:17:25');
INSERT INTO `city` VALUES (8, 'OSLO', '2013-06-20 07:17:44');

そして私は彼らをそのように救おうとします

INSERT INTO `city` VALUES (1, 'ISTANBUL', '2013-06-19 18:09:39');
INSERT INTO `city` VALUES (2, 'IZMIR', '2013-06-19 15:06:35');
INSERT INTO `city` VALUES (3, 'LONDON', '2013-06-19 11:17:15');
INSERT INTO `city` VALUES (4, 'BERLIN', '2013-06-18 06:12:21');
INSERT INTO `city` VALUES (5, 'MOSCOW', '2013-06-20 19:15:33');
INSERT INTO `city` VALUES (6, 'PARIS', '2013-06-20 12:18:32');
INSERT INTO `city` VALUES (7, 'NEW YORK', '2013-06-20 21:17:25');
INSERT INTO `city` VALUES (8, 'OSLO', '2013-06-20 07:17:44');

同じ古い行をtxtに保存したくありません。新しい行が来ると、古い行の mysql の下部に追加する必要があります..どうすればそれを行うことができますか?

4

3 に答える 3

1

INSERT の代わりに REPLACE ステートメントを使用する必要があります。

REPLACE は INSERT とまったく同じように機能しますが、テーブルの古い行が PRIMARY KEY または UNIQUE インデックスの新しい行と同じ値を持つ場合、新しい行が挿入される前に古い行が削除される点が異なります。

http://dev.mysql.com/doc/refman/5.5/en/replace.html

于 2013-06-20T13:24:51.643 に答える
1

都市を一意にし、mysqlの「重複キー更新時」ステートメントを確認します。

于 2013-06-20T13:34:33.050 に答える
1

値を挿入するときに都市名を一意のインデックスとして配置すると、エラーが表示されます。したがって、重複エントリを回避できます。

マニュアルから:

UNIQUE インデックスは、インデックス内のすべての値が個別でなければならないという制約を作成します。既存の行と一致するキー値を持つ新しい行を追加しようとすると、エラーが発生します。この制約は、BDB ストレージ エンジンを除き、NULL 値には適用されません。他のエンジンの場合、UNIQUE インデックスは、NULL を含むことができる列に対して複数の NULL 値を許可します。UNIQUE インデックスの列にプレフィックス値を指定する場合、列の値はプレフィックス内で一意である必要があります。

于 2013-06-20T13:32:45.697 に答える