【问题标题】:list all tables in a database with MySQLi使用 MySQLi 列出数据库中的所有表
【发布时间】:2011-06-09 20:11:14
【问题描述】:

我环顾四周,仍然找不到如何列出数据库中的所有表。 MySQLi 可以吗?

谢谢。

【问题讨论】:

标签: php mysql sql mysqli


【解决方案1】:

有很多方法。

SHOW TABLES

是执行此操作的最简单的 SQL 语句。如果您想了解更多详细信息或进行一些过滤等,也可以查看INFORMATION_SCHEMA.TABLES

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA LIKE 'your_database';

【讨论】:

  • 什么是 INFORMATION_SCHEMA 和 TABLE_SCHEMA??
【解决方案2】:

使用 PHP 5.5 或更高版本,一个简单的解决方案是使用 PHP 的内置 array_column() 函数。

$link = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME);
$listdbtables = array_column($link->query('SHOW TABLES')->fetch_all(),0);

【讨论】:

    【解决方案3】:

    我会尝试类似:

    function get_tables()
    {
      $tableList = array();
      $res = mysqli_query($this->conn,"SHOW TABLES");
      while($cRow = mysqli_fetch_array($res))
      {
        $tableList[] = $cRow[0];
      }
      return $tableList;
    }
    

    【讨论】:

    【解决方案4】:
    $link = mysqli_connect("localhost", "domain_root", "##pwd", "domain_DBname");
    
    $query = mysqli_query($link, "SHOW TABLES IN domain_DBname");
    $numrows = mysqli_num_rows($query);
    echo "<b>Amount of tables: ".$numrows." and their names:</b>";
    while ($row = mysqli_fetch_array($query)) {
        echo $row[0]." ";
    }
    

    【讨论】:

    • 请说明您在此处添加了哪些新信息
    • 上述解决方案:使用 PHP 5.5 或更高版本..." 对我不起作用,所以我创建了这个。如果解决方案不正确,请给我留言
    • 你的不是和stackoverflow.com/a/4703159/1839439一样吗?
    • 请解释你的答案,也许它会有用。目前我不知道我想从这段代码中学到什么
    • 这里使用 MySQLi 类(过程类型),没有任何附加功能。
    【解决方案5】:

    这是一个小例子

    class database {
        public $connection;
    
        function __construct() {
            $this->connection = mysqli_connect(DBHOST,
                                               DBUSER,
                                               DBPASS,
                                               DBNAME) or 
            die('Database Connection Error: '.mysqli_connect_error());  
        }
    
        public function close_database() { 
            return mysqli_close($this->connection); 
        }
        public function query($query) {
            $query = mysqli_query($this->connection ,$query) or die($this->show_errors('Query Execution Error: '.mysqli_error($this->connection),'E'));
            return $query;  
        }
        public function fetch_assoc($query) {
            $query = mysqli_fetch_assoc($query);
            return $query;  
        }
    }
    
    $db = new database();
    $query = $db->query("SHOW TABLES FROM DATABASENAME");
    $db->fetch_assoc($query);
    

    【讨论】:

    • 你应该只使用 MySQLi 类,而不是将此类创建为包装器来使用过程函数。
    猜你喜欢
    • 2016-10-17
    • 2016-01-15
    • 2019-05-04
    • 1970-01-01
    • 2011-06-21
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多