I'm trying to insert a query and update any rows that already exist at the same time, I know it's bad practise to use the SQL that phpMyAdmin outputs, this was just to get it to work initially then I'll clean it up. So I read to use ON DUPLICATE KEY UPDATE, but I haven't managed to find anything to really explain the correct syntax I should be using. INSERT INTO `play_products` (`id`, `prod`, `img`, `price`, `del`, `cat`, `sup`) VALUES ('684271539', 'BL 2', 'url', '19.85', '0.00', 'PS3', 'partner'); ON DUPLICATE KEY UPDATE `play_products` (`prod`, `img`, `price`, `del`, `cat`, `sup`); Code (markup): It gives the error: #1062 - Duplicate entry '684271539' for key 'PRIMARY' Can anyone suggest the correct syntax or a better method? I have thousands of records to add/update every day so really need something that can work in bulk and as efficient as possible with time (will be automated of course, but I want to keep the processing time to a minimum) Regards
As I couldn't get it to work (using various methods obtained through search engines) I've decided to just split the process in PHP: $query = mysql_query("SELECT id FROM products WHERE id='$id'") or die(mysql_error()); if (mysql_num_rows($query) > 0) { //update.. } else { //insert.. } PHP: I have no preference to how it's done, just assumed it would be more efficient to do it in a single query, so I'm still open to suggestions if they will reduce the processing time/resources needed.