データベース内のすべてのテーブルを表示しようとしています。私はこれを試しました:
$sql = "SHOW TABLES";
$result = $conn->query($sql);
$tables = $result->fetch_assoc();
foreach($tables as $tmp)
{
echo "$tmp <br>";
}
しかし、それは私が知っているデータベース内の1つのテーブル名のみを提供します2.私は何が間違っていますか?
SHOW TABLES
mysql> USE test;
Database changed
mysql> SHOW TABLES;
+----------------+
| Tables_in_test |
+----------------+
| t1 |
| t2 |
| t3 |
+----------------+
3 rows in set (0.00 sec)
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)
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)
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 FROM nameOfDatabase;
SHOW TABLE_NAMEは無効です。 SHOW TABLESを試す
TD
SHOW TABLESは、特定のデータベース内の非TEMPORARYテーブルのみをリストします。