簡體   English   中英

如果已經存在,將不會插入的PHP MySQL插入查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM