|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2000-09-12 04:54 UTC] danbeck at dealnews dot com
If you have a table with an auto_increment BIGINT field: CREATE TABLE bigtest ( id bigint(20) NOT NULL auto_increment, PRIMARY KEY (id) ); and the last ID you inserted was larger than 32 bits: i.e. 293949384923 If you insert a new record using: insert into bigtest values (null); mysql_insert_id() will return an incorrect number usually negative. It looks like it's storing that large (64bit) number in a 32bit field of some sort before returning it to the caller. PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Nov 04 23:00:01 2025 UTC |
I researched this a little more and found this code snippit at line 1100: ZEND_FETCH_RESOURCE2(mysql, MYSQL *, mysql_link, id, "MySQL-Link", le_link, le_plink); /* conversion from int64 to long happing here */ return_value->value.lval = (long) mysql_insert_id(mysql); return_value->type = IS_LONG; Is there any way that this could be converted into a string before returning? (Forgive me if I'm over simplifying this...)