在调用mysql_select_db
来获取数据库后,有没有办法在以后输出当前选中的数据库的名称?这看起来很基本,但我在php.net或stackoverflow上找不到任何东西(所有结果都是“没有选择数据库”)。
答案 0 :(得分:286)
使用mysql_query(或mysqli_query,甚至更好,或者最好使用PDO):
SELECT DATABASE() FROM DUAL;
关于是否应该包括FROM DUAL
,有很多讨论。在技术层面上,它是Oracle的延续,可以安全地删除。如果您愿意,可以使用以下代码:
SELECT DATABASE();
也就是说,重要的是要注意,虽然FROM DUAL
实际上并不做任何东西,但它是有效的MySQL语法。从严格的角度来看,在JavaScript中以条件为单位包括大括号也不会做任何事情,但它仍然是一种有效的做法。
答案 1 :(得分:79)
SELECT DATABASE();
P.S。我不想冒昧地修改@ cwallenpoole的答案,以反映这是一个MySQL问题,而不是Oracle问题而且不需要DUAL
。
答案 2 :(得分:39)
答案 3 :(得分:9)
在http://www.php.net/manual/de/function.mysql-db-name.php的评论中,我从ericpp%bigfoot.com找到了这个:
如果您只需要当前的数据库名称,可以使用MySQL的SELECT DATABASE()命令:
<?php
function mysql_current_db() {
$r = mysql_query("SELECT DATABASE()") or die(mysql_error());
return mysql_result($r,0);
}
?>
答案 4 :(得分:2)
@mysql_result(mysql_query("SELECT DATABASE();"),0)
如果未选择数据库,或者没有连接,则返回NULL
,否则返回所选数据库的名称。
答案 5 :(得分:2)
稍微偏离主题(使用CLI而不是PHP),但仍然值得了解: 您可以使用以下任何
设置提示以显示默认数据库mysql --prompt='\d> '
export MYSQL_PS1='\d> '
或内幕
prompt \d>\_
\R \d>\_
答案 6 :(得分:1)
另一种用特定单词过滤数据库的方法。
SHOW DATABASES WHERE `Database` LIKE '<yourDatabasePrefixHere>%'
or
SHOW DATABASES LIKE '<yourDatabasePrefixHere>%';
示例:
SHOW DATABASES WHERE `Database` LIKE 'foobar%'
foobar_animal
foobar_humans_gender
foobar_objects
答案 7 :(得分:0)
SELECT DATABASE()
在PHPMyAdmin中工作。