diff --git a/ChangeLog b/ChangeLog index 2f30df364..889c140ed 100644 --- a/ChangeLog +++ b/ChangeLog @@ -135,6 +135,7 @@ - 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 1db4f1eac..2ddd765e0 100644 --- a/libraries/dbi/mysql.dbi.lib.php +++ b/libraries/dbi/mysql.dbi.lib.php @@ -392,13 +392,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 8022c771d..71693ab35 100644 --- a/libraries/dbi/mysqli.dbi.lib.php +++ b/libraries/dbi/mysqli.dbi.lib.php @@ -452,7 +452,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. } /**