如何确定选择了哪个数据库

Posted

技术标签:

【中文标题】如何确定选择了哪个数据库【英文标题】:How to determine which database is selected 【发布时间】:2011-12-27 03:33:33 【问题描述】:

在调用mysql_select_db抓取一个数据库后,有什么办法可以稍后输出当前选中的数据库名称吗?这似乎很基本,但我在 php.net 或 *** 上找不到任何东西(所有结果都是“未选择数据库”)。

【问题讨论】:

【参考方案1】:

只需使用 mysql_query(或 mysqli_query,甚至更好,或使用 PDO,最好的):

SELECT DATABASE() FROM DUAL;

附录:

关于FROM DUAL 是否应包含在此中有很多讨论。在技​​术层面上,它是 Oracle 的保留,可以安全地删除。如果您愿意,可以改用以下内容:

SELECT DATABASE();

也就是说,需要注意的是,虽然FROM DUAL 实际上并没有任何事情,但它是有效的 MySQL 语法。从严格的角度来看,在 javascript 中在单行条件中包含大括号也不会做任何事情,但它仍然是一种有效的做法。

【讨论】:

DUAL 是一个 Oracle 表,已被 MySQL 接管。对于不需要实际表的操作,它是一个虚拟表。 en.wikipedia.org/wiki/DUAL_table @DigitalPrecision 这是因为我在 Oracle 上做了很多工作。 Oracle 不允许您选择,除非它是 from 的东西,因此有一个名为“DUAL”的特殊表,其中只有一个单元格。你可以省略它。 可能应该编辑这个保留现有答案以供后代使用,但添加 SELECT DATABASE(); 作为“实际”答案。 @JanThomä 这意味着我可以对 DUAL 表执行任何查询? @PardeepJain 这超出了我的专业领域,也许 cwallenpoole 可以回答。【参考方案2】:
SELECT DATABASE();

附言我不想冒昧修改@cwallenpoole 的答案以反映这是一个 MySQL 问题而不是 Oracle 问题并且不需要 DUAL 的事实。

【讨论】:

旧习惯难改。尽管自 2011 年以来我没有接触过 Oracle,但我仍然有时会认为“来自 DUAL”。 是的。尽管自 2011 年以来我没有接触过 Oracle,但我仍在思考 FROM DUAL 这又是我……还在想。 @cwallenpoole 你还在想吗? @cwallenpoole 现在怎么样?【参考方案3】:

您可以随时使用 STATUS 命令了解当前数据库和当前用户

【讨论】:

虽然没有反映在上面的输出中,但在我的系统上,它还显示了 TCP 端口,这对我来说很方便,因为我正在运行 mysqld_multi 并且我想提醒自己我在说哪个实例到。【参考方案4】:

在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);

?>

【讨论】:

因为 OP 使用了 PHP 函数“mysql_select_db”并要求使用 PHP。你真的读过这个问题吗? 谢谢,是的,我最初要求提供特定于 PHP 的答案,以防万一有类似 mysql_current_db 之类的方法。有人对其进行了编辑以从标题和标签中删除“php”【参考方案5】:

SELECT DATABASE() 在 PHPMyAdmin 工作。

【讨论】:

这或多或少只是对现有答案的重复。 可以是对任何有效答案的有效评论 :)【参考方案6】:

另一种用特定词过滤数据库的方法。

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】:
@mysql_result(mysql_query("SELECT DATABASE();"),0)

如果没有选择数据库,或者没有连接,则返回NULL,否则返回所选数据库的名称。

【讨论】:

【参考方案8】:

有点离题(使用 CLI 而不是 PHP),但仍然值得了解: 您可以使用以下任何方式设置提示以显示默认数据库

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

或一次进入

prompt \d>\_
\R \d>\_

【讨论】:

以上是关于如何确定选择了哪个数据库的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewRowAnimation自动如何确定要使用哪个动画?

如何确定单击了哪个单元格?

如何确定在 C# ASP.NET CORE MVC 5.0 中选择了哪个单选按钮

确定用户按下了哪个按钮

如何确定哪个数据集用于特定变量?

引导手风琴如何检查哪个面板处于活动状态