diff --git a/phpBB/phpbb/db/driver/driver_interface.php b/phpBB/phpbb/db/driver/driver_interface.php index e269fac585..7615030a5a 100644 --- a/phpBB/phpbb/db/driver/driver_interface.php +++ b/phpBB/phpbb/db/driver/driver_interface.php @@ -289,12 +289,37 @@ interface driver_interface public function cast_expr_to_bigint($expression); /** - * Get last inserted id after insert statement - * - * @return string 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. + * + * Will be deprecated in a future version of phpBB in favor of + * `sql_last_inserted_id`. + * + * @return string|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. + * + * Alias of `sql_nextid`. + * + * @return string|false Auto-incremented value of the last inserted row + * + * @since 3.3.8-RC1 + */ + 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 b2a5707120..d8865dc524 100644 --- a/phpBB/phpbb/db/driver/factory.php +++ b/phpBB/phpbb/db/driver/factory.php @@ -314,13 +314,21 @@ class factory implements driver_interface } /** - * {@inheritdoc} - */ + * {@inheritdoc} + */ public function sql_nextid() { return $this->get_driver()->sql_nextid(); } + /** + * {@inheritdoc} + */ + public function sql_last_inserted_id() + { + return $this->get_driver()->sql_nextid(); + } + /** * {@inheritdoc} */ diff --git a/phpBB/phpbb/db/driver/mssql_odbc.php b/phpBB/phpbb/db/driver/mssql_odbc.php index 06cdce7a15..6a08f1100f 100644 --- a/phpBB/phpbb/db/driver/mssql_odbc.php +++ b/phpBB/phpbb/db/driver/mssql_odbc.php @@ -269,8 +269,8 @@ class mssql_odbc extends \phpbb\db\driver\mssql_base } /** - * {@inheritDoc} - */ + * {@inheritDoc} + */ function sql_nextid() { $result_id = @odbc_exec($this->db_connect_id, 'SELECT @@IDENTITY'); @@ -289,6 +289,14 @@ class mssql_odbc extends \phpbb\db\driver\mssql_base return false; } + /** + * {@inheritdoc} + */ + public function sql_last_inserted_id() + { + return $this->sql_nextid(); + } + /** * {@inheritDoc} */ diff --git a/phpBB/phpbb/db/driver/mssqlnative.php b/phpBB/phpbb/db/driver/mssqlnative.php index 30ef9d9bc4..c1955f8b84 100644 --- a/phpBB/phpbb/db/driver/mssqlnative.php +++ b/phpBB/phpbb/db/driver/mssqlnative.php @@ -271,8 +271,8 @@ class mssqlnative extends \phpbb\db\driver\mssql_base } /** - * {@inheritDoc} - */ + * {@inheritDoc} + */ function sql_nextid() { $result_id = @sqlsrv_query($this->db_connect_id, 'SELECT @@IDENTITY'); @@ -290,6 +290,14 @@ class mssqlnative extends \phpbb\db\driver\mssql_base } } + /** + * {@inheritdoc} + */ + public function sql_last_inserted_id() + { + return $this->sql_nextid(); + } + /** * {@inheritDoc} */ diff --git a/phpBB/phpbb/db/driver/mysqli.php b/phpBB/phpbb/db/driver/mysqli.php index 1b7f6252f6..1c4a48cbb6 100644 --- a/phpBB/phpbb/db/driver/mysqli.php +++ b/phpBB/phpbb/db/driver/mysqli.php @@ -289,13 +289,21 @@ class mysqli extends \phpbb\db\driver\mysql_base } /** - * {@inheritDoc} - */ + * {@inheritDoc} + */ function sql_nextid() { return ($this->db_connect_id) ? @mysqli_insert_id($this->db_connect_id) : false; } + /** + * {@inheritdoc} + */ + public function sql_last_inserted_id() + { + return $this->sql_nextid(); + } + /** * {@inheritDoc} */ diff --git a/phpBB/phpbb/db/driver/oracle.php b/phpBB/phpbb/db/driver/oracle.php index 3f6bc49b35..c96201ef0c 100644 --- a/phpBB/phpbb/db/driver/oracle.php +++ b/phpBB/phpbb/db/driver/oracle.php @@ -570,8 +570,8 @@ class oracle extends \phpbb\db\driver\driver } /** - * {@inheritDoc} - */ + * {@inheritDoc} + */ function sql_nextid() { $query_id = $this->query_result; @@ -607,6 +607,14 @@ class oracle extends \phpbb\db\driver\driver return false; } + /** + * {@inheritdoc} + */ + public function sql_last_inserted_id() + { + return $this->sql_nextid(); + } + /** * {@inheritDoc} */ diff --git a/phpBB/phpbb/db/driver/postgres.php b/phpBB/phpbb/db/driver/postgres.php index 3ee4b2b00e..0f87f5a8f0 100644 --- a/phpBB/phpbb/db/driver/postgres.php +++ b/phpBB/phpbb/db/driver/postgres.php @@ -342,8 +342,8 @@ class postgres extends \phpbb\db\driver\driver } /** - * {@inheritDoc} - */ + * {@inheritDoc} + */ function sql_nextid() { $query_id = $this->query_result; @@ -370,6 +370,14 @@ class postgres extends \phpbb\db\driver\driver return false; } + /** + * {@inheritdoc} + */ + public function sql_last_inserted_id() + { + return $this->sql_nextid(); + } + /** * {@inheritDoc} */ diff --git a/phpBB/phpbb/db/driver/sqlite3.php b/phpBB/phpbb/db/driver/sqlite3.php index 61b87d86b5..638b9035ed 100644 --- a/phpBB/phpbb/db/driver/sqlite3.php +++ b/phpBB/phpbb/db/driver/sqlite3.php @@ -242,13 +242,21 @@ class sqlite3 extends \phpbb\db\driver\driver } /** - * {@inheritDoc} - */ - public function sql_nextid() + * {@inheritDoc} + */ + function sql_nextid() { return ($this->db_connect_id) ? $this->dbo->lastInsertRowID() : false; } + /** + * {@inheritdoc} + */ + public function sql_last_inserted_id() + { + return $this->sql_nextid(); + } + /** * {@inheritDoc} */