Я пытаюсь показать все таблицы в моей базе данных. Я пробовал это:
$sql = "SHOW TABLES"; $result = $conn->query($sql); $tables = $result->fetch_assoc(); foreach($tables as $tmp) { echo "$tmp <br>"; }
но это только дает мне одно имя таблицы в базе данных, которую я знаю, 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 отображает только не-ВРЕМЕННЫЕ таблицы в данной базе данных.
<?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 !!!!!!!!!!