显示 MySQL 数据库中 php 中的所有表名
Posted
技术标签:
【中文标题】显示 MySQL 数据库中 php 中的所有表名【英文标题】:Displaying all table names in php from MySQL database 【发布时间】:2012-03-27 22:26:04 【问题描述】:好的,所以我对 php 和 SQL/mysql 还很陌生,因此感谢任何帮助。
我觉得我采取了正确的方法。我在 php.net 中搜索“MySQL 显示所有表名”,它返回了一个不推荐使用的方法,并建议在 SHOW TABLES [FROM db_name] [LIKE 'pattern']
上使用 MySQL 查询我不确定“模式”是什么意思,但是,我搜索了“SQL 通配符”并得到了“%”符号。根据我发现的所有内容,这应该可以工作并在最后输出表名,但事实并非如此。有什么建议么?提前致谢。
<?php
if ($_REQUEST["username"]=="coke"&&$_REQUEST["password"]=="pepsi")
echo 'You have successfully logged in.';
echo '<br />';
echo 'These are your tables:';
echo '<br />';
$link = mysql_connect("sql2.njit.edu", "username", "password");
mysql_select_db("db_name") or die(mysql_error());
$result = mysql_query('SHOW TABLES [FROM db_name] [LIKE '%']');
echo $result;
else
echo 'You did not provide the proper authentication';
?>
我没有收到任何错误。输出正是回显的内容,但没有表名。
【问题讨论】:
【参考方案1】:代码中的方括号在 mysql 文档中用于指示可选参数组。它们不应该出现在实际查询中。
您真正需要的唯一命令是:
show tables;
如果你想要来自特定数据库的表,比如说数据库“books”,那么它就是
show tables from books;
如果您想查找名称与特定模式匹配的表,您只需要 LIKE 部分。例如,
show tables from books like '%book%';
会显示名称中某处带有“book”的表的名称。
此外,仅运行“显示表”查询不会产生任何您可以看到的输出。 SQL 回答查询,然后将其传递给 PHP,但您需要告诉 PHP 将其回显到页面。
因为听起来您对 SQL 很陌生,所以我建议您从命令行运行 mysql 客户端(或使用 phpmyadmin,如果它安装在您的系统上)。这样您就可以看到各种查询的结果,而无需通过 PHP 的函数来发送查询和接收结果。
如果你必须使用 PHP,这里有一个非常简单的演示。连接到数据库后尝试此代码:
$result = mysql_query("show tables"); // run the query and assign the result to $result
while($table = mysql_fetch_array($result)) // go through each row that was returned in $result
echo($table[0] . "<BR>"); // print the table that was returned on that row.
【讨论】:
【参考方案2】:对于使用PDO statements的人
$query = $db->prepare('show tables');
$query->execute();
while($rows = $query->fetch(PDO::FETCH_ASSOC))
var_dump($rows);
【讨论】:
【参考方案3】:SHOW TABLES
将显示您数据库中的所有表。如果你想过滤你使用LIKE
和通配符%
的名字
SHOW TABLES FROM my_database LIKE '%user%'
将为您提供名称中包含“用户”的所有表,例如
users
user_pictures
mac_users
等等
【讨论】:
【参考方案4】:mysql 文档中用于示例的常用括号应在“真实”查询中省略。
您似乎也没有在任何地方回显 mysql 查询的结果。 mysql_query 成功时返回一个 mysql 资源。 php 手册页还包含有关如何将 mysql 结果资源加载到数组中以进行回显和其他操作的说明。
【讨论】:
【参考方案5】:查询应如下所示:
SHOW TABLES
SHOW TABLES FROM mydatabase
SHOW TABLES FROM mydatabase LIKE "tab%"
方括号 [] 中来自 MySQL 文档的内容是可选的。
【讨论】:
【参考方案6】:您需要将 mysql_query 分配给一个变量(例如 $result),然后像显示来自数据库的正常结果一样显示该变量。
【讨论】:
这不起作用。还有其他建议吗?更新了我的问题以显示您建议的更改。 您需要像普通结果集一样循环 $result:while ($row = mysql_fetch_array($result, MYSQL_NUM)) echo $row[0];
我也认为 SQL 语法可能有点偏离,如其他地方所述 - 去掉方括号中的所有内容【参考方案7】:
当然,您可以使用SHOW TABLES
查询您的数据库,然后遍历所有记录,但这是额外的代码行和工作。
PHP 有一个内置函数可以为您将所有表列出到一个数组中:
mysql_list_tables - 你可以在The PHP API page找到更多信息
【讨论】:
此功能现已完全删除。【参考方案8】://list_tables 表示数据库所有表
$tables = $this->db->list_tables();
foreach ($tables as $table)
echo $table;
【讨论】:
如果您要回答一个多年前的问题,请说明您的答案比已经列出的答案更好,或者语言如何改变以允许您在以前没有答案的情况下回答。 list_tables 表示数据库所有表以上是关于显示 MySQL 数据库中 php 中的所有表名的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHP 选择并显示 MySQL 表中的所有字段以获取无限量的列