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? 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] ... ] 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 Link to comment https://forums.phpfreaks.com/topic/247161-mysql-updateinsert/#findComment-1269431 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.