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') 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 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! 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. Link to comment https://forums.phpfreaks.com/topic/19929-insert-ignore/#findComment-87301 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.