I'm trying to show all the tables in my database. I've tried this:
$sql = "SHOW TABLES"; $result = $conn->query($sql); $tables = $result->fetch_assoc(); foreach($tables as $tmp) { echo "$tmp <br>"; }
but it only gives me one table name in a database I know has 2. What am I doing wrong?
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)
you have fetched just 1 row. fix like this:
while ( $tables = $result->fetch_array()) { echo $tmp[0]."<br>"; }
and I think, information_schema would be better than 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>"; }
Try this:
SHOW TABLES FROM nameOfDatabase;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With