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