Jump to content

mySQL update/insert


Nedals

Recommended Posts

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

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

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.