From 29e7f041a342f59ad2741700c9af6be5472a82bf Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Wed, 12 May 2010 18:07:46 +0200 Subject: [PATCH] Display auto_increment value of inserted item --- adminer/drivers/mssql.inc.php | 5 +++++ adminer/drivers/mysql.inc.php | 8 ++++++++ adminer/drivers/pgsql.inc.php | 4 ++++ adminer/drivers/sqlite.inc.php | 5 +++++ adminer/edit.inc.php | 4 +++- adminer/lang/cs.inc.php | 2 +- changes.txt | 3 ++- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/adminer/drivers/mssql.inc.php b/adminer/drivers/mssql.inc.php index 43bb1b0e..f7f1f446 100644 --- a/adminer/drivers/mssql.inc.php +++ b/adminer/drivers/mssql.inc.php @@ -409,6 +409,11 @@ WHERE OBJECT_NAME(indexes.object_id) = " . $connection2->quote($table) return queries("INSERT INTO " . table($table) . ($set ? " (" . implode(", ", array_keys($set)) . ")\nVALUES (" . implode(", ", $set) . ")" : "DEFAULT VALUES")); } + function last_id() { + global $connection; + return $connection->result("SELECT SCOPE_IDENTITY()"); // @@IDENTITY can return trigger INSERT + } + function explain($connection, $query) { $connection->query("SET SHOWPLAN_ALL ON"); $return = $connection->query($query); diff --git a/adminer/drivers/mysql.inc.php b/adminer/drivers/mysql.inc.php index c59e5100..2ff4099a 100644 --- a/adminer/drivers/mysql.inc.php +++ b/adminer/drivers/mysql.inc.php @@ -769,6 +769,14 @@ if (!defined("DRIVER")) { return queries("INSERT INTO " . table($table) . " (" . implode(", ", array_keys($set)) . ")\nVALUES (" . implode(", ", $set) . ")"); } + /** Get last auto increment ID + * @return string + */ + function last_id() { + global $connection; + return $connection->result("SELECT LAST_INSERT_ID()"); // mysql_insert_id() truncates bigint + } + /** Explain select * @param Min_DB * @param string diff --git a/adminer/drivers/pgsql.inc.php b/adminer/drivers/pgsql.inc.php index 5af39846..2858db39 100644 --- a/adminer/drivers/pgsql.inc.php +++ b/adminer/drivers/pgsql.inc.php @@ -466,6 +466,10 @@ WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name = " . $connection->qu return queries("INSERT INTO " . table($table) . ($set ? " (" . implode(", ", array_keys($set)) . ")\nVALUES (" . implode(", ", $set) . ")" : "DEFAULT VALUES")); } + function last_id() { + return 0; // there can be several sequences + } + function explain($connection, $query) { return $connection->query("EXPLAIN $query"); } diff --git a/adminer/drivers/sqlite.inc.php b/adminer/drivers/sqlite.inc.php index 0659e5e2..bafb141e 100644 --- a/adminer/drivers/sqlite.inc.php +++ b/adminer/drivers/sqlite.inc.php @@ -500,6 +500,11 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) { return queries("INSERT INTO " . table($table) . ($set ? " (" . implode(", ", array_keys($set)) . ")\nVALUES (" . implode(", ", $set) . ")" : "DEFAULT VALUES")); } + function last_id() { + global $connection; + return $connection->result("SELECT LAST_INSERT_ROWID()"); + } + function explain($connection, $query) { return $connection->query("EXPLAIN $query"); } diff --git a/adminer/edit.inc.php b/adminer/edit.inc.php index 19a0e1b1..9a853912 100644 --- a/adminer/edit.inc.php +++ b/adminer/edit.inc.php @@ -31,7 +31,9 @@ if ($_POST && !$error && !isset($_GET["select"])) { } query_redirect("UPDATE" . limit1(table($TABLE) . " SET" . implode(",", $set) . "\nWHERE $where"), $location, lang('Item has been updated.')); } else { - queries_redirect($location, lang('Item has been inserted.'), insert_into($TABLE, $set)); + $result = insert_into($TABLE, $set); + $last_id = ($result ? last_id() : 0); + queries_redirect($location, lang('Item%s has been inserted.', ($last_id ? " $last_id" : "")), $result); //! link } } } diff --git a/adminer/lang/cs.inc.php b/adminer/lang/cs.inc.php index f1cbc764..5a534de7 100644 --- a/adminer/lang/cs.inc.php +++ b/adminer/lang/cs.inc.php @@ -40,7 +40,7 @@ $translations = array( 'Create new table' => 'Vytvořit novou tabulku', 'Item has been deleted.' => 'Položka byla smazána.', 'Item has been updated.' => 'Položka byla aktualizována.', - 'Item has been inserted.' => 'Položka byla vložena.', + 'Item%s has been inserted.' => 'Položka%s byla vložena.', 'Edit' => 'Upravit', 'Insert' => 'Vložit', 'Save and insert next' => 'Uložit a vložit další', diff --git a/changes.txt b/changes.txt index 4cbd5665..c7d02cdb 100644 --- a/changes.txt +++ b/changes.txt @@ -9,8 +9,9 @@ Remember export parameters in cookie Allow semicolon as CSV separator Autofocus username in login form Disable spellchecking in SQL textareas -Japanese translation +Display auto_increment value of inserted item Link table names in SQL queries +Japanese translation Defer table information in database overview to JavaScript (performance) Big tables optimizations (performance)