ID: 45834 Comment by: chuck dot joga at windriver dot com Reported By: swadlern at op dot pl Status: No Feedback Bug Type: MySQL related Operating System: Mandriva Linux 2008.1 x86_64 PHP Version: 5.2.6 New Comment:
Occurs when a duplicate key exists. The next autoincrement number is returned instead of the id of the row updated. No row is inserted and the next autoincrement number is not used. I'm still trying to find a workaround. Previous Comments: ------------------------------------------------------------------------ [2008-09-14 01:00:01] php-bugs at lists dot php dot net No feedback was provided for this bug for over a week, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open". ------------------------------------------------------------------------ [2008-09-06 15:55:36] j...@php.net After running the script, what is the output of 'select * from test' ? ------------------------------------------------------------------------ [2008-08-16 10:53:38] swadlern at op dot pl Description: ------------ I execute the following query: INSERT INTO test VALUES (NULL,'key','value') ON DUPLICATE KEY UPDATE v='value'; key exists and value of v column is the same as new value in UPDATE clause. I call $id=mysql_insert_id(); and expect that $id is id of existing row (id is INT NOT NULL PRIMARY KEY AUTO_INCREMENT column) but $id contains another value. MySQL version is 5.0.51a Reproduce code: --------------- <?php /* MySQL table definition CREATE TABLE test ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, k VARCHAR(10) NOT NULL UNIQUE, v VARCHAR(10) NOT NULL ); */ $db_host='localhost'; //database host $db_user=''; //database user $db_pass=''; //database password $db_name='test'; //database name mysql_connect($db_host,$db_user,$db_pass); //connect to database mysql_query("USE $db_name"); //select database mysql_query('TRUNCATE test'); //clear test table mysql_query('INSERT INTO test VALUES (NULL,\'key\',\'value\')'); mysql_query('INSERT INTO test VALUES (NULL,\'key\',\'value\') ON DUPLICATE KEY UPDATE v=\'value\''); $id=mysql_insert_id(); mysql_close(); echo("Expected id is 1, id is $id\n"); ?> Expected result: ---------------- I expect $id to be 1 Actual result: -------------- $id is 2 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=45834&edit=1