使用 PHP 显示 MySQL 数据库中的所有表?

Posted

技术标签:

【中文标题】使用 PHP 显示 MySQL 数据库中的所有表?【英文标题】:Show all tables inside a MySQL database using PHP? 【发布时间】:2013-12-09 14:48:48 【问题描述】:

我正在尝试显示我的数据库中的所有表。我试过这个:

$sql = "SHOW TABLES";
$result = $conn->query($sql);
$tables = $result->fetch_assoc();
foreach($tables as $tmp)

    echo "$tmp <br>";

但它只给了我一个我知道有 2 的数据库中的表名。我做错了什么?

【问题讨论】:

【参考方案1】:

如何获取表格

1。 SHOW TABLES

mysql> USE test;
Database changed
mysql> SHOW TABLES;
+----------------+
| Tables_in_test |
+----------------+
| t1             |
| t2             |
| t3             |
+----------------+
3 rows in set (0.00 sec)

2。 SHOW TABLES IN db_name

mysql> SHOW TABLES IN another_db;
+----------------------+
| Tables_in_another_db |
+----------------------+
| t3                   |
| t4                   |
| t5                   |
+----------------------+
3 rows in set (0.00 sec)

3。使用信息架构

mysql> SELECT TABLE_NAME
       FROM information_schema.TABLES
       WHERE TABLE_SCHEMA = 'another_db';
+------------+
| TABLE_NAME |
+------------+
| t3         |
| t4         |
| t5         |
+------------+
3 rows in set (0.02 sec)

到 OP

您只提取了 1 行。像这样修复:

while ( $tables = $result->fetch_array())

    echo $tmp[0]."<br>";

我认为,information_schema 会比SHOW TABLES 更好

SELECT TABLE_NAME
FROM information_schema.TABLES 
WHERE TABLE_SCHEMA = 'your database name'

while ( $tables = $result->fetch_assoc())

    echo $tables['TABLE_NAME']."<br>";

【讨论】:

SHOW TABLES IN DB_MANE 没有理由不使用SHOW TABLES,除非活动连接正在使用临时表。 @holodoc 这是我个人的看法。 SHOW TABLE 的输出标题类似于 'Tables_in_TBL_NAME'。所以在客户端程序中执行时。所以列名被改变了。人们不知道 information_schema 有更多关于 DB 的有用信息 完美。出于某种原因,我认为它只会返回实际表的数组,而不是行。 我最喜欢解决方案#3。 information_schema.tables 表为我提供了更多信息。总是很高兴看到【参考方案2】:

试试这个:

SHOW TABLES FROM nameOfDatabase;

【讨论】:

【参考方案3】:

SHOW TABLE_NAME 无效。尝试显示表格

TD

【讨论】:

哎呀,我想改变它。我正在测试不同的东西,只是从我的代码中复制粘贴。这是显示表【参考方案4】:

SHOW TABLES 仅列出给定数据库中的非临时表。

https://dev.mysql.com/doc/refman/5.0/en/show-tables.html

【讨论】:

【参考方案5】:
<?php
$dbname = 'mysql_dbname';
if (!mysql_connect('mysql_host', 'mysql_user', 'mysql_password')) 
echo 'Could not connect to mysql';
exit;

$sql = "SHOW TABLES FROM $dbname";
$result = mysql_query($sql);
if (!$result) 
echo "DB Error, could not list tables\n";
echo 'MySQL Error: ' . mysql_error();
exit;

while ($row = mysql_fetch_row($result)) 
echo "Table: $row[0]\n";

mysql_free_result($result);
?>
//Try This code is running perfectly !!!!!!!!!!


【讨论】:

这只是一个代码 sn-p。如果它是一个实际的答案,那么它应该有一些关于它是如何工作的以及为什么它是一个比其他答案更好的答案的解释。 我发现这可以作为一个快速的 sn-p 进行试验。谢谢阿米特!

以上是关于使用 PHP 显示 MySQL 数据库中的所有表?的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 选择并显示 MySQL 表中的所有字段以获取无限量的列

使用 PHP 列出 MySQL 数据库中的所有表

使用php在单个mysql数据库表中的表中显示子类别及其父类别

使用 PHP 创建表并从 MySQL 填充

PHP 优化MySQL数据库中的所有表

如何在逻辑上使用 PHP 显示数据库表的所有可能值?