如何确定选择了哪个数据库
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自动如何确定要使用哪个动画?