【发布时间】:2011-12-27 03:33:33
【问题描述】:
在调用mysql_select_db抓取一个数据库后,有什么办法可以稍后输出当前选中的数据库名称吗?这似乎很基本,但我在 php.net 或 stackoverflow 上找不到任何东西(所有结果都是“未选择数据库”)。
【问题讨论】:
标签: mysql
在调用mysql_select_db抓取一个数据库后,有什么办法可以稍后输出当前选中的数据库名称吗?这似乎很基本,但我在 php.net 或 stackoverflow 上找不到任何东西(所有结果都是“未选择数据库”)。
【问题讨论】:
标签: mysql
只需使用 mysql_query(或 mysqli_query,甚至更好,或使用 PDO,最好的):
SELECT DATABASE() FROM DUAL;
关于FROM DUAL 是否应包含在此中有很多讨论。在技术层面上,它是 Oracle 的保留,可以安全地删除。如果您愿意,可以改用以下内容:
SELECT DATABASE();
也就是说,需要注意的是,虽然FROM DUAL 实际上并没有做任何事情,但它是有效的 MySQL 语法。从严格的角度来看,在 JavaScript 中在单行条件中包含大括号也不会做任何事情,但它仍然是一种有效的做法。
【讨论】:
SELECT DATABASE(); 作为“实际”答案。
SELECT DATABASE();
附言我不想冒昧修改@cwallenpoole 的答案以反映这是一个 MySQL 问题而不是 Oracle 问题并且不需要 DUAL 的事实。
【讨论】:
在http://www.php.net/manual/de/function.mysql-db-name.php的cmets中我从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);
}
?>
【讨论】:
mysql_current_db 之类的方法。有人对其进行了编辑以从标题和标签中删除“php”
SELECT DATABASE() 在 PHPMyAdmin 工作。
【讨论】:
另一种用特定词过滤数据库的方法。
SHOW DATABASES WHERE `Database` LIKE '<yourDatabasePrefixHere>%'
or
SHOW DATABASES LIKE '<yourDatabasePrefixHere>%';
示例:
SHOW DATABASES WHERE `Database` LIKE 'foobar%'
foobar_animal
foobar_humans_gender
foobar_objects
【讨论】:
@mysql_result(mysql_query("SELECT DATABASE();"),0)
如果没有选择数据库,或者没有连接,则返回NULL,否则返回所选数据库的名称。
【讨论】:
有点离题(使用 CLI 而不是 PHP),但仍然值得了解: 您可以使用以下任何方式设置提示以显示默认数据库
mysql --prompt='\d> '
export MYSQL_PS1='\d> '
或一次进入
prompt \d>\_
\R \d>\_
【讨论】: