#31728 [Opn]: mysql_insert_id() return wrong ID
| From: | godwizard at hotmail dot com | Date: | Thu, 27 Jan 2005 19:24:12 +0000 |
| Subject: | #31728 [Opn]: mysql_insert_id() return wrong ID | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-72945@lists.php.net to get a copy of this message | ||
ID: 31728
User updated by: godwizard at hotmail dot com
Reported By: godwizard at hotmail dot com
Status: Open
Bug Type: MySQL related
Operating System: Linux Fedora Core 2
PHP Version: 5.0.3
New Comment:
Very odd...
The ID which mysql_insert_id is returning, comes from following
class/function:
function ddd_use()
{
global $db_dur_insert;
$query = sprintf("
insert into stat_ddd_use (istuntoID, rotuID, resolution, request,
aikaleima)
values (%u, %u, %s, %s, %u)",
sql_valid($_SESSION['stat']['istuntoID']),
sql_valid($_SESSION['rotuID']),
sql_valid($_COOKIE['users_resolution']),
sql_valid($_SESSION['login_request']),
sql_valid((time())));
if ( (isset($db_dur_insert)) && (isset($query)) )
{
$db_dur_insert->query($query);
unset($query);
}
}
All code are in several classes. And there is more than 1 DB connection
opened at same time.
Previous Comments:
------------------------------------------------------------------------
[2005-01-27 20:08:22] godwizard at hotmail dot com
Description:
------------
mysql_insert_id return wrong ID. It will add new line to DB correctly
but when using mysql_insert_id to get auto_increment value, it will
return something odd.
Reproduce code:
---------------
function add_line()
{
global $db_insert;
$aikaleima = time();
if ( (isset($_SESSION['admin']['rekisteriID'])) &&
(strlen($_SESSION['admin']['rekisteriID']) > 0) )
{
$query = sprintf("
insert into rekisteri_rekisteriID (rekisteriID, oletus, lisatty,
lisaaja)
values (%s, 1, %u, %u)",
sql_valid($_SESSION['admin']['rekisteriID']),
sql_valid($aikaleima),
sql_valid($_SESSION['user']['userID']));
if ( (isset($db_insert)) && (isset($query)) )
{
$result = $db_insert->query($query);
unset($query);
}
if ( (isset($result)) && (mysql_affected_rows() > 0) )
{
$rekisterinro = mysql_insert_id();
}
....
Expected result:
----------------
Example value should be 29171.
Actual result:
--------------
Value is 7618. And ID 7618 is already reserved in DB.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=31728&edit=1