【问题标题】:Show all tables inside a MySQL database using PHP?使用 PHP 显示 MySQL 数据库中的所有表?
【发布时间】:2013-12-09 14:48:48
【问题描述】:

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

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

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

【问题讨论】:

    标签: php mysql database


    【解决方案1】:

    如何获取表格

    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>";
    }
    

    【讨论】:

    • SHOW TABLES IN DB_MANE
    • 没有理由不使用SHOW TABLES,除非活动连接正在使用临时表。
    • @holodoc 这是我个人的看法。 SHOW TABLE 的输出标题类似于 'Tables_in_TBL_NAME'。所以在客户端程序中执行时。所以列名被改变了。人们不知道 information_schema 有更多关于 DB 的有用信息
    • 完美。出于某种原因,我认为它只会返回实际表的数组,而不是行。
    • 我最喜欢解决方案#3。 information_schema.tables 表为我提供了更多信息。总是很高兴看到
    【解决方案2】:

    试试这个:

    SHOW TABLES FROM nameOfDatabase;
    

    【讨论】:

      【解决方案3】:

      SHOW TABLE_NAME 无效。尝试显示表格

      TD

      【讨论】:

      • 哎呀,我想改变它。我正在测试不同的东西,只是从我的代码中复制粘贴。这是显示表
      【解决方案4】:

      SHOW TABLES 仅列出给定数据库中的非临时表。

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

      【讨论】:

        【解决方案5】:
        <?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 !!!!!!!!!!
        


        【讨论】:

        • 这只是一个代码 sn-p。如果它是一个实际的答案,那么它应该有一些关于它是如何工作的以及为什么它是一个比其他答案更好的答案的解释。
        • 我发现这可以作为一个快速的 sn-p 进行试验。谢谢阿米特!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-17
        • 2018-01-10
        • 1970-01-01
        • 1970-01-01
        • 2016-09-01
        • 1970-01-01
        • 2017-06-01
        相关资源
        最近更新 更多