diff --git a/phpBB/phpbb/db/driver/driver.php b/phpBB/phpbb/db/driver/driver.php index c9b4e8db01..3a1cd8c27b 100644 --- a/phpBB/phpbb/db/driver/driver.php +++ b/phpBB/phpbb/db/driver/driver.php @@ -690,6 +690,14 @@ abstract class driver implements driver_interface return $expression; } + /** + * {@inheritDoc} + */ + public function sql_nextid() + { + return $this->sql_last_inserted_id(); + } + /** * {@inheritDoc} */ diff --git a/phpBB/phpbb/db/driver/driver_interface.php b/phpBB/phpbb/db/driver/driver_interface.php index 54e3457d3f..e781cbd122 100644 --- a/phpBB/phpbb/db/driver/driver_interface.php +++ b/phpBB/phpbb/db/driver/driver_interface.php @@ -289,12 +289,35 @@ interface driver_interface public function cast_expr_to_bigint($expression); /** - * Get last inserted id after insert statement - * - * @return int|false Autoincrement value of the last inserted row - */ + + * Gets the ID of the **last** inserted row immediately after an INSERT + * statement. + * + * **Note**: Despite the name, the returned ID refers to the row that has + * just been inserted, rather than the hypothetical ID of the next row if a + * new one was to be inserted. + * + * The returned value can be used for selecting the item that has just been + * inserted or for updating another table with an ID pointing to that item. + * + * Alias of `sql_last_inserted_id`. + * + * @deprecated 3.3.11-RC1 Replaced by sql_last_inserted_id(), to be removed in 4.1.0-a1 + * + * @return int|false Auto-incremented value of the last inserted row + */ public function sql_nextid(); + /** + * Gets the ID of the last inserted row immediately after an INSERT + * statement. The returned value can be used for selecting the item that has + * just been inserted or for updating another table with an ID pointing to + * that item. + * + * @return int|false Auto-incremented value of the last inserted row + */ + public function sql_last_inserted_id(); + /** * Add to query count * diff --git a/phpBB/phpbb/db/driver/factory.php b/phpBB/phpbb/db/driver/factory.php index d282aa78e6..5e65b9218f 100644 --- a/phpBB/phpbb/db/driver/factory.php +++ b/phpBB/phpbb/db/driver/factory.php @@ -316,11 +316,19 @@ class factory implements driver_interface } /** - * {@inheritdoc} - */ + * {@inheritdoc} + */ public function sql_nextid() { - return $this->get_driver()->sql_nextid(); + return $this->get_driver()->sql_last_inserted_id(); + } + + /** + * {@inheritdoc} + */ + public function sql_last_inserted_id() + { + return $this->get_driver()->sql_last_inserted_id(); } /** diff --git a/phpBB/phpbb/db/driver/mssql_odbc.php b/phpBB/phpbb/db/driver/mssql_odbc.php index 211b98fc7e..f0528ec74a 100644 --- a/phpBB/phpbb/db/driver/mssql_odbc.php +++ b/phpBB/phpbb/db/driver/mssql_odbc.php @@ -264,9 +264,9 @@ class mssql_odbc extends \phpbb\db\driver\mssql_base } /** - * {@inheritDoc} - */ - function sql_nextid() + * {@inheritdoc} + */ + public function sql_last_inserted_id() { $result_id = @odbc_exec($this->db_connect_id, 'SELECT @@IDENTITY'); diff --git a/phpBB/phpbb/db/driver/mssqlnative.php b/phpBB/phpbb/db/driver/mssqlnative.php index 62a5f51772..f329e6d200 100644 --- a/phpBB/phpbb/db/driver/mssqlnative.php +++ b/phpBB/phpbb/db/driver/mssqlnative.php @@ -269,9 +269,9 @@ class mssqlnative extends \phpbb\db\driver\mssql_base } /** - * {@inheritDoc} - */ - function sql_nextid() + * {@inheritdoc} + */ + public function sql_last_inserted_id() { $result_id = @sqlsrv_query($this->db_connect_id, 'SELECT @@IDENTITY'); diff --git a/phpBB/phpbb/db/driver/mysqli.php b/phpBB/phpbb/db/driver/mysqli.php index e2f6d20033..54ff684cf9 100644 --- a/phpBB/phpbb/db/driver/mysqli.php +++ b/phpBB/phpbb/db/driver/mysqli.php @@ -285,9 +285,9 @@ class mysqli extends \phpbb\db\driver\mysql_base } /** - * {@inheritDoc} - */ - function sql_nextid() + * {@inheritdoc} + */ + public function sql_last_inserted_id() { return ($this->db_connect_id) ? (int) @mysqli_insert_id($this->db_connect_id) : false; } diff --git a/phpBB/phpbb/db/driver/oracle.php b/phpBB/phpbb/db/driver/oracle.php index ee4ad9b5f5..3457ddf2f1 100644 --- a/phpBB/phpbb/db/driver/oracle.php +++ b/phpBB/phpbb/db/driver/oracle.php @@ -568,9 +568,9 @@ class oracle extends \phpbb\db\driver\driver } /** - * {@inheritDoc} - */ - function sql_nextid() + * {@inheritdoc} + */ + public function sql_last_inserted_id() { $query_id = $this->query_result; diff --git a/phpBB/phpbb/db/driver/postgres.php b/phpBB/phpbb/db/driver/postgres.php index 63ebdbf994..72004b758c 100644 --- a/phpBB/phpbb/db/driver/postgres.php +++ b/phpBB/phpbb/db/driver/postgres.php @@ -328,9 +328,9 @@ class postgres extends \phpbb\db\driver\driver } /** - * {@inheritDoc} - */ - function sql_nextid() + * {@inheritdoc} + */ + public function sql_last_inserted_id() { $query_id = $this->query_result; diff --git a/phpBB/phpbb/db/driver/sqlite3.php b/phpBB/phpbb/db/driver/sqlite3.php index 0be8b14104..25905a14a7 100644 --- a/phpBB/phpbb/db/driver/sqlite3.php +++ b/phpBB/phpbb/db/driver/sqlite3.php @@ -228,9 +228,9 @@ class sqlite3 extends \phpbb\db\driver\driver } /** - * {@inheritDoc} - */ - public function sql_nextid() + * {@inheritdoc} + */ + public function sql_last_inserted_id() { return ($this->db_connect_id) ? $this->dbo->lastInsertRowID() : false; }