簡體   English   中英

僅在MySQL表中尚不存在的情況下插入數據:INSERT IGNORE出現問題

[英]Inserting data in MySQL table only if it doesn't exist already: trouble with INSERT IGNORE

因此,我一直在尋找StackOverflow和MySQL手冊已有一段時間,但似乎無法解決我的問題。 我想做的就是簡單地使我的數據INSERT函數,這樣它就不會向我的表添加任何東西(如果已經存在)。 我看到了一些方法:INSERT IGNORE函數和一個唯一索引對我來說似乎是最合適的,但是我不知道為什么它不起作用...這是我的一部分代碼(兩列:“用戶名”和“電子郵件”,我的表稱為“ info4”):

$unique_index = mysqli_query ($con, "CREATE UNIQUE INDEX index ON info4 ( username, email);");

$insert = mysqli_query($con, "INSERT IGNORE INTO info4 (`username`, `email`) VALUES ('$array_values[0]', '$array_values[1]')");

我要去哪里錯了? 我有什么想念的嗎?

您無法創建名為index的索引。

Mysql不區分大小寫。 您的INDEX錯誤地命名為“索引”將不起作用。

例:

mysql>在tbladresse(strasse_zusatz)上創建索引索引; 錯誤1064(42000):您的SQL語法有錯誤; 檢查與您的MySQL服務器版本對應的手冊以獲取正確的語法,以在第1行的“ tbladresse上的索引(strasse_zusatz)”附近使用

mysql>在tbladresse(strasse_zusatz)上創建索引iindex; 查詢正常,受影響的0行(0.03秒)記錄:0重復:0警告:0

嘗試將重復數據插入具有唯一約束的字段時,“ Insert Ignore只是告訴MySQL不要發出重復鍵錯誤。

唯一索引應該是阻止插入重復項所需的全部。

通常,您不想使用PHP添加索引之類的東西,您應該通過用於訪問數據庫的任何工具來做到這一點。

您是否看到表中插入了重復的用戶名/電子郵件組合? $array_values[0]$array_values[1]的值是什么?

如果您SHOW INDEX FROM info4 ,您會看到自己的唯一索引嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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