有2種方法:
代碼如下 復制代碼insert ignore into {$this->getTable(‘core_config_data’)} (scope,scope_id,path,value) values (‘default’,0,’dev/debug/template_hints’,0);
注:如果使用的是insert into 發現重復的會報錯,而insert ignore into 發現將要插入的數據行中包含唯一索引的字段值已存在,會丟棄掉這行數據,不做任何處理
代碼如下 復制代碼replace into {$this->getTable(‘core_config_data’)}(scope,scope_id,path,value) values(‘default’,0,’dev/debug/template_hints’,0);
注:REPLACE發現重復的先刪除再插入,如果記錄有多個字段,在插入的時候如果有的字段沒有賦值,那麼新插入的記錄這些字段為空,所以為了更好的解決這個問題,我們可以進入一些操作
代碼如下 復制代碼/如果不存在,則插入新數據
$sql = “INSERT INTO {$ecs->table(‘cat_lang’)} (cat_id,lang_id,cat_name,keywords,cat_desc)
VALUES({$cat_id},{$k},’{$val['cat_name']}’,'{$val['keywords']}’,'{$val['cat_desc']}’)
ON DUPLICATE KEY UPDATE cat_name=’{$val['cat_name']}’,cat_desc=’{$val['cat_desc']}’,keywords=’{$val['cat_desc']}’”;
這裡要注意的是:必須表主鍵唯一 。這裡,這裡我采用的是 分類id和語言id雙主鍵機制。
具體sql如:
代碼如下 復制代碼INSERT INTO TABLE (a,b,c)
VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
UPDATE TABLE SET c=c+1 WHERE a=1;
key為唯一鍵或者主鍵