在调用mysql_select_db抓取数据库之后,有没有办法稍后输出当前选择的数据库的名称?这似乎非常基本,但我在php.net或stackoverflow上找不到任何东西(所有结果都是"没有选择数据库").
cwa*_*ole 311
只需使用mysql_query(或mysqli_query,甚至更好,或者最好使用PDO):
SELECT DATABASE() FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
关于是否FROM DUAL应该包括在内是否存在很多讨论.在技术层面上,它是Oracle的延续,可以安全地删除.如果您有意愿,可以使用以下代码:
SELECT DATABASE();
Run Code Online (Sandbox Code Playgroud)
也就是说,重要的是要注意,虽然FROM DUAL实际上没有做任何事情,但它是有效的MySQL语法.从严格的角度来看,在JavaScript中以条件形式包含大括号也没有做任何事情,但它仍然是一种有效的做法.
Eli*_*ynn 83
SELECT DATABASE();
Run Code Online (Sandbox Code Playgroud)
ps我不想冒昧地修改@ cwallenpoole的答案,以反映这是一个MySQL问题,而不是Oracle问题而且不需要DUAL.
在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);
}
?>
Run Code Online (Sandbox Code Playgroud)
稍微偏离主题(使用 CLI 而不是 PHP),但仍然值得了解:您可以使用以下任一方法设置提示以显示默认数据库
mysql --prompt='\d> '
export MYSQL_PS1='\d> '
Run Code Online (Sandbox Code Playgroud)
或一旦进入
prompt \d>\_
\R \d>\_
Run Code Online (Sandbox Code Playgroud)