diff --git a/src/modules/Mysql/mysql.c b/src/modules/Mysql/mysql.c
index 149007c34951b928860398e6b99a3b4a1d91f36d..506c4024f77ad0c1ff075d5bc86168556f45a323 100644
--- a/src/modules/Mysql/mysql.c
+++ b/src/modules/Mysql/mysql.c
@@ -1032,7 +1032,7 @@ static void f_sqlstate(INT32 args)
  *! you want to access with this function.
  *!
  *! @seealso
- *!   @[create()], @[create_db()], @[drop_db()]
+ *!   @[create()], @[create_db()], @[drop_db()], @[query_db()]
  */
 static void f_select_db(INT32 args)
 {
@@ -1073,6 +1073,26 @@ static void f_select_db(INT32 args)
   pop_n_elems(args);
 }
 
+/*! @decl string|zero query_db()
+ *!
+ *! Returns the currently selected database.
+ *!
+ *! @seealso
+ *!   @[select_db()]
+ */
+static void f_query_db(INT32 args)
+{
+  MYSQL *mysql = PIKE_MYSQL->mysql;
+
+  pop_n_elems(args);
+
+  if (mysql && mysql->db) {
+    push_text(mysql->db);
+  } else {
+    push_undefined();
+  }
+}
+
 static void low_query(INT32 args, char *name, int flags)
 {
   MYSQL *mysql = PIKE_MYSQL->mysql;
@@ -2026,6 +2046,8 @@ PIKE_MODULE_INIT
   ADD_FUNCTION("insert_id", f_insert_id,tFunc(tVoid,tInt), ID_PUBLIC);
   /* function(string:void) */
   ADD_FUNCTION("select_db", f_select_db,tFunc(tStr,tVoid), ID_PUBLIC);
+  /* function(:string) */
+  ADD_FUNCTION("query_db", f_query_db, tFunc(tNone,tStr), ID_PUBLIC);
   /* function(string:int|object) */
   ADD_FUNCTION("big_query", f_big_query,tFunc(tStr,tObj), ID_PUBLIC);
   /* function(string:int|object) */