barkster Posted September 6, 2006 Share Posted September 6, 2006 I have table called email with fields EmailID(Primary Key), Email, and Remove. I only want to insert new records where Email does not exists. I can't figure out how to do it. I changed Email to a primary key but I guess because it is text this insert doesn't work. How can I insert only if Email is unique? ThanksINSERT IGNORE INTO Emails (Email,Remove) VALUES ('[email protected]','1') Quote Link to comment https://forums.phpfreaks.com/topic/19929-insert-ignore/ Share on other sites More sharing options...
obsidian Posted September 6, 2006 Share Posted September 6, 2006 rather than changing email to a primary key, you just need to make it a UNIQUE constraint. then, the SQL will return an error if you try to insert one that already exists. otherwise, you need to check it with PHP first:[code]<?php$sql = mysql_query("SELECT * FROM emails WHERE email = '$email'");if (mysql_num_rows($sql) == 0) { // no records yet, so insert it mysql_query("INSERT INTO emails (email, remove) VALUES ('$email', '1')");}?>[/code]hope this helps Quote Link to comment https://forums.phpfreaks.com/topic/19929-insert-ignore/#findComment-87287 Share on other sites More sharing options...
barkster Posted September 6, 2006 Author Share Posted September 6, 2006 Thanks that is actually how I was doing it just thought I could do it somehow with one statement. Thanks! Quote Link to comment https://forums.phpfreaks.com/topic/19929-insert-ignore/#findComment-87296 Share on other sites More sharing options...
fenway Posted September 6, 2006 Share Posted September 6, 2006 I don't see why INSERT IGNORE wouldn't work, once you had the UNIQUE index. Quote Link to comment https://forums.phpfreaks.com/topic/19929-insert-ignore/#findComment-87301 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.