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

Jad*_*dar 36 php mysql database

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

$sql = "SHOW TABLES";
$result = $conn->query($sql);
$tables = $result->fetch_assoc();
foreach($tables as $tmp)
{
    echo "$tmp <br>";
}
Run Code Online (Sandbox Code Playgroud)

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

Jas*_*Heo 78

如何获得表格

1. SHOW TABLES

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

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)
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

到OP

你只拿了一排.修复如下:

while ( $tables = $result->fetch_array())
{
    echo $tmp[0]."<br>";
}
Run Code Online (Sandbox Code Playgroud)

我认为,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>";
}
Run Code Online (Sandbox Code Playgroud)

  • 或者`在DB_MANE中显示表格 (4认同)
  • @holodoc这是我的个人意见."SHOW TABLE"输出的标题类似于"Tables_in_TBL_NAME".所以在客户端程序中执行时.因此列名称已更改.并且人们不了解有关DB的更多有用信息的information_schema (2认同)

小智 8

试试这个:

SHOW TABLES FROM nameOfDatabase;
Run Code Online (Sandbox Code Playgroud)