From 31cd4bdd6a7c42527b2011201d378e3c9accce8a Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Wed, 12 Jan 2011 08:04:57 -0500 Subject: [PATCH] bug #3155842 [core] Edit relational page and page number --- ChangeLog | 1 + libraries/dbi/mysql.dbi.lib.php | 4 +--- libraries/dbi/mysqli.dbi.lib.php | 8 +++++++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2831d0745..a5226f5d2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -11,6 +11,7 @@ $HeadURL: https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/trunk/phpMyA - patch #3150164 [structure] Ordering by size gives incorrect results, thanks to Madhura Jayaratne - madhuracj - bug #3153409 [core] 0 row(s) affected +- bug #3155842 [core] Edit relational page and page number 3.3.9.0 (2011-01-03) - bug [doc] Fix references to MySQL doc diff --git a/libraries/dbi/mysql.dbi.lib.php b/libraries/dbi/mysql.dbi.lib.php index 6aa9c6af4..5d2f8fe07 100644 --- a/libraries/dbi/mysql.dbi.lib.php +++ b/libraries/dbi/mysql.dbi.lib.php @@ -396,13 +396,11 @@ function PMA_DBI_insert_id($link = null) return false; } } - //$insert_id = mysql_insert_id($link); - // if the primary key is BIGINT we get an incorrect result + // If the primary key is BIGINT we get an incorrect result // (sometimes negative, sometimes positive) // and in the present function we don't know if the PK is BIGINT // so better play safe and use LAST_INSERT_ID() // - // by the way, no problem with mysqli_insert_id() return PMA_DBI_fetch_value('SELECT LAST_INSERT_ID();', 0, 0, $link); } diff --git a/libraries/dbi/mysqli.dbi.lib.php b/libraries/dbi/mysqli.dbi.lib.php index f1f037c80..07de2f75d 100644 --- a/libraries/dbi/mysqli.dbi.lib.php +++ b/libraries/dbi/mysqli.dbi.lib.php @@ -457,7 +457,13 @@ function PMA_DBI_insert_id($link = '') return false; } } - return mysqli_insert_id($link); + // When no controluser is defined, using mysqli_insert_id($link) + // does not always return the last insert id due to a mixup with + // the tracking mechanism, but this works: + return PMA_DBI_fetch_value('SELECT LAST_INSERT_ID();', 0, 0, $link); + // Curiously, this problem does not happen with the mysql extension but + // there is another problem with BIGINT primary keys so PMA_DBI_insert_id() + // in the mysql extension also uses this logic. } /**