亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

避免重復進入MySQL數據庫的最佳方法

避免重復進入MySQL數據庫的最佳方法

肥皂起泡泡 2019-07-13 10:14:26
避免重復進入MySQL數據庫的最佳方法我有一個3列的表-id(PK),pageId(FK),name。我有一個php腳本,它將大約5000條記錄轉儲到表中,其中大約一半是重復的,具有相同的pageId和名稱。頁面ID和名稱的組合應該是唯一的。當我在php中循環腳本時,防止復制被保存到表中的最佳方法是什么?
查看完整描述

3 回答

?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

第一步是在表上設置一個唯一的鍵:

ALTER TABLE thetable ADD UNIQUE INDEX(pageid, name);

當有重復的時候,你必須決定你想做什么。你應該:

  1. 無視它?

    INSERT IGNORE INTO thetable (pageid, name) VALUES (1, "foo"), (1, "foo");
  2. 覆蓋以前輸入的記錄?

    INSERT INTO thetable (pageid, name, somefield)VALUES (1, "foo", "first")ON DUPLICATE KEY UPDATE (somefield = 'first')
    INSERT INTO thetable (pageid, name, somefield)VALUES (1, "foo", "second")ON DUPLICATE KEY UPDATE (somefield = 'second')
  3. 更新一些柜臺?

    INSERT INTO thetable (pageid, name)VALUES (1, "foo"), (1, "foo")ON DUPLICATE KEY UPDATE (pagecount = pagecount + 1)


查看完整回答
反對 回復 2019-07-13
?
慕田峪9158850

TA貢獻1794條經驗 獲得超8個贊

從MySQL的角度來看,您可以這樣做

alter table YOURTABLE add unique index(pageId, name);

如果你的措辭是正確的,并且你想從php做它,你可以這樣做。

$already_done = array();foreach ($records as $record){
   $unique_hash = md5($record['name'].$record['pageId']);
   if (!in_array($unique_hash, $already_done))
   {
      $already_done[] = $unique_hash;
      // sql insert here
   }}

不管怎樣,這對你來說都很好。


查看完整回答
反對 回復 2019-07-13
  • 3 回答
  • 0 關注
  • 464 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號