使用MySQLi列出数据库中的所有表

18

我已经查找过,但仍然无法找到如何列出数据库中所有表格的方法。在MySQLi中是否可能实现?

谢谢。


3
http://dev.mysql.com/doc/refman/5.0/en/show-tables.html - Pekka
这回答了您的问题吗?如何在php中显示特定mysql数据库中的所有表名 - Nico Haase
5个回答

18

有很多种方法。

SHOW TABLES

这是最简单的执行此操作的 SQL 语句。如果您想获取更多详细信息或进行筛选等操作,也可以查看 INFORMATION_SCHEMA.TABLES

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

INFORMATION_SCHEMA和TABLE_SCHEMA是什么? - Run

17
使用PHP 5.5或更高版本,一个简单的解决方案是使用PHP内置的array_column()函数。
$link = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME);
$listdbtables = array_column($link->query('SHOW TABLES')->fetch_all(),0);

11

我会尝试类似这样的方法:

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

提供的链接出现了404错误。 - Stephane
更新链接:https://devzone.zend.com/13/php-101-part-8-databases-and-other-animals_part-2/ - cubic1271

1
$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]." ";
}

请解释一下你在这里添加了什么新信息。 - Dharman
以上的解决方案:“使用 PHP 5.5 或更高版本…” 对我无效,因此我创建了这个。如果该解决方案不正确,请告诉我。 - Clark Superman
你的代码不是和 https://dev59.com/Tm445IYBdhLWcg3wydBk#4703159 一样吗? - Dharman
请解释一下你的答案,也许它会有用。目前我不知道我想从这段代码中学到什么。 - Dharman
这里使用MySQLi类(过程式类型),没有任何额外的函数。 - Clark Superman
其他答案也是如此。请使用[编辑]链接并解释您的答案试图教给我们什么。如果我们无法从中学习,仅代码答案并不是很有帮助。 - Dharman

-1

这里有一个小例子

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);

1
不要创建这个类作为一个包装器来使用过程式函数,而应该直接使用MySQLi类。 - Nathan F.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接