ID: 6675
Updated by: sniper
Reported By: [EMAIL PROTECTED]
Old-Status: Open
Status: Closed
Bug Type: MySQL related
Assigned To: 
Comments:

Feedback by Sean R. Bright <[EMAIL PROTECTED]>:
----------------------------------------------
the documentation for mysql_insert_id()
states that for very large values of the returned id (>32bits) this will return the 
wrong data and users should use LAST_INSERT_ID() to fetch that
info from mysql instead.
----------------------------------------------



Previous Comments:
---------------------------------------------------------------------------

[2000-09-12 21:45:15] [EMAIL PROTECTED]
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...)


---------------------------------------------------------------------------

[2000-09-12 04:54:10] [EMAIL PROTECTED]
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.


---------------------------------------------------------------------------


Full Bug description available at: http://bugs.php.net/?id=6675


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to