Re: PHP 4.0 Bug #6675 Updated: mysql_insert_id returns incorrect size for BIGINT fields
| From: | Daniel Beckham | Date: | Mon, 15 Jan 2001 15:29:44 +0000 |
| Subject: | Re: PHP 4.0 Bug #6675 Updated: mysql_insert_id returns incorrect size for BIGINT fields | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-44137@lists.php.net to get a copy of this message | ||
The documentation explains this issue because I wrote the addition after
discovering this issue. I have a phpdoc cvs account... Please re-open this
issue, unless the PHP team has no current plans to fix it.
Daniel
----- Original Message -----
From: "Bug Database" <php-dev@lists.php.net>
To: <danbeck@dealnews.com>
Sent: Monday, January 15, 2001 3:30 AM
Subject: PHP 4.0 Bug #6675 Updated: mysql_insert_id returns incorrect size
for BIGINT fields
> ID: 6675
> Updated by: sniper
> Reported By: danbeck@dealnews.com
> Old-Status: Open
> Status: Closed
> Bug Type: MySQL related
> Assigned To:
> Comments:
>
> Feedback by Sean R. Bright <elixer@erols.com>:
> ----------------------------------------------
> 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] danbeck@php.net
> 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] danbeck@dealnews.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.
>
>
> --------------------------------------------------------------------------
-
>
>
> Full Bug description available at: http://bugs.php.net/?id=6675
>
>
>