[英]Check value before insert and if already exists don't insert it on mysql using php
[英]PHP MySQL Insert Query that won't insert if already exists
不幸的是,我一直在做一些研究,沒有發現我能做的任何事情,我認為這是由於我一直在看的示例中對MySQL構造的不了解所致。
我想做的是運行一個插入查詢,並檢查3個特定列中的值以確保它們不存在,然后插入,否則什么也不做。
我的表非常基本:id(int11),user(varchar(45)),label(varchar(255)),agent(varchar(255)),empid(varchar(10))。
我的ID是我的主要用戶,具有自動遞增功能,這是我目前在插入時可以使用的代碼,但是沒有處理重復的代碼:
$i = 0;
foreach ($agents as $ag){
$sql = mysql_query("INSERT INTO `pms_users`
(`id`,`user`,`label`,`agent`,`empid`)
VALUES
(NULL, '$user','$group','$labels[$i]','$ag')");
$i ++;
}
我需要檢查的三列是$ user,$ group和$ ag。
為(user, label, empid)
添加唯一索引。 然后,數據庫將不允許您創建重復項。
ALTER TABLE pms_users
ADD UNIQUE INDEX (user, label, empid);
如果每個用戶,標簽和代理的組合只能有一行,則應將它們定義為唯一約束:
ALTER TABLE pms_users ADD CONSTRAINT pms_users_unq UNIQUE (`user`, `label`, `agent`);
然后讓數據庫使用insert-ignore語句完成繁重的工作:
INSERT IGNORE INTO `pms_users`
(`user`, `label`, `agent`, `empid`)
VALUES ('some_user', 'some_label', 'some_agent', 123)
您可以嘗試在重復鍵更新查詢上插入。它檢查重復鍵。 如果它們存在,則MySQL執行更新查詢;如果不存在,則MySQL執行插入查詢。 確保在數據庫中應該聲明唯一鍵。 這是此情況的MySQL文檔https://dev.mysql.com/doc/refman/8.0/zh-CN/insert-on-duplicate.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.