web-dev-qa-db-ja.com

PHPを使用してMySQLデータベース内のすべてのテーブルを表示しますか?

データベース内のすべてのテーブルを表示しようとしています。私はこれを試しました:

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

しかし、それは私が知っているデータベース内の1つのテーブル名のみを提供します2.私は何が間違っていますか?

36
Jadar

テーブルを取得する方法

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>";
}
78
Jason Heo

これを試して:

SHOW TABLES FROM nameOfDatabase;
8
kurt

SHOW TABLE_NAMEは無効です。 SHOW TABLESを試す

TD

2
Tim Duncklee

SHOW TABLESは、特定のデータベース内の非TEMPORARYテーブルのみをリストします。

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

0
jack