Nedals Posted September 15, 2011 Share Posted September 15, 2011 I am attempting something similar to the following: mysql_query("UPDATE table SET name='$name' WHERE id=$id"); if (mysql_affected_rows()==0) { mysql_query("INSERT INTO table (id, name) VALUES ('$name',$id); } If the $id row does not exists in the table, mysql_affected_rows() returns 0 and a new $id row gets inserted but if the $id row already exists and UPDATE changes nothing, mysql_affected_rows() still returns 0 and gives an 'duplicate id' error as expected. I know I could use a SELECT to test for the existance of the $id row. In Perl there is an '0E0', 'zero but true', condition to handle this. Is there an equivilant in PHP? Quote Link to comment https://forums.phpfreaks.com/topic/247161-mysql-updateinsert/ Share on other sites More sharing options...
PFMaBiSmAd Posted September 15, 2011 Share Posted September 15, 2011 You would want to use an INSERT ... ON DUPLICATE KEY UPDATE ... query - INSERT INTO tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),... ON DUPLICATE KEY UPDATE col_name=expr [, col_name=expr] ... ] Quote Link to comment https://forums.phpfreaks.com/topic/247161-mysql-updateinsert/#findComment-1269424 Share on other sites More sharing options...
Nedals Posted September 15, 2011 Author Share Posted September 15, 2011 I was not familiar with the ON DUPLICATE. Tried it out and its works perfectly. Thanks Quote Link to comment https://forums.phpfreaks.com/topic/247161-mysql-updateinsert/#findComment-1269431 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.