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").
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.
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
.
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
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);
}
?>
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.
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>\_
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.
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
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