MySQL: determinar qué base de datos está seleccionada?


Después de llamar a mysql_select_db para obtener una base de datos, ¿hay alguna forma de generar el nombre de la base de datos que está seleccionada actualmente? Esto parece muy básico, pero no pude encontrar nada en php.net o stackoverflow (todos los resultados son para "ninguna base de datos seleccionada").

 170
Author: phs, 2011-11-11

8 answers

Simplemente use mysql_query (o mysqli_query, aún mejor, o use PDO, lo mejor de todo) con:

SELECT DATABASE() FROM DUAL;

Adición:

Hay mucha discusión sobre si FROM DUAL debe incluirse o no en esto. A nivel técnico, es un remanente de Oracle y se puede eliminar de forma segura. Si está inclinado, puede usar lo siguiente en su lugar:

SELECT DATABASE();

Dicho esto, es quizás importante tener en cuenta, que mientras FROM DUAL no hace realmente hacer nada, es válido MySQL sintaxis. Desde una perspectiva estricta, incluir llaves en una sola línea condicional en JavaScript tampoco hace nada , pero sigue siendo una práctica válida.

 251
Author: cwallenpoole,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-20 17:12:30
SELECT DATABASE();

P.d. No quería tomarme la libertad de modificar la respuesta de @cwallenpoole para reflejar el hecho de que esta es una pregunta MySQL y no una pregunta Oracle y no necesita DUAL.

 72
Author: Elijah Lynn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-04 19:37:07

Siempre puede usar el comando STATUS para conocer La base de datos actual y el Usuario actual

introduzca la descripción de la imagen aquí

 33
Author: Mogli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-14 05:20:55

En los comentarios de http://www.php.net/manual/de/function.mysql-db-name.php He encontrado este de ericpp % bigfoot.com:

Si solo necesita el nombre actual de la base de datos, puede usar el comando SELECT DATABASE() de MySQL:

<?php
function mysql_current_db() {
    $r = mysql_query("SELECT DATABASE()") or die(mysql_error());
    return mysql_result($r,0);
}
?>
 9
Author: Jan Thomä,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-11 15:59:23
@mysql_result(mysql_query("SELECT DATABASE();"),0)

Si no hay ninguna base de datos seleccionada, o no hay conexión, devuelve NULL de lo contrario, el nombre de la base de datos seleccionada.

 2
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-24 13:56:34

Ligeramente fuera de tema (usando la CLI en lugar de PHP), pero aún vale la pena saberlo: Puede configurar el indicador para que muestre la base de datos predeterminada utilizando cualquiera de los siguientes

mysql --prompt='\d> '
export MYSQL_PS1='\d> '

O una vez dentro

prompt \d>\_
\R \d>\_
 1
Author: Jeff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-28 21:02:29

SELECT DATABASE() trabajó en phpMyAdmin.

 0
Author: Abhi Chavda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-28 08:21:38

Sé que este post es bastante antiguo. Solo lo dejo aquí en caso de que un recién llegado necesite ayuda para filtrar la base de datos con una palabra específica.

SHOW DATABASES WHERE `Database` LIKE '<yourDatabasePrefixHere>%'
or
SHOW DATABASES LIKE '<yourDatabasePrefixHere>%';

Ejemplo:

SHOW DATABASES WHERE `Database` LIKE 'foobar%'
foobar_animal
foobar_humans_gender
foobar_objects
 0
Author: TheHive,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-28 12:42:18