从数据库中选择所有表,并在每个表中查询相同的列名

时间:2019-06-06 08:10:02

标签: php mysql

我有几个表正在由外部应用程序导入。它们的名称例如是Table_1Table_296等。 每个表中都有一个名为Name的列。

我的问题是:如何检索所有表的名称,以便可以将它们放入另一个查询中,该查询将从每个列Name中检索行? 基本上,我需要检查值并列出包含该值的一个或多个表。

我可以使用下面的代码来检索所有表名,但是据我所知,不能全部使用变量来选择它们。

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.tables WHERE TABLE_NAME LIKE '%Table%' AND TABLE_SCHEMA='mydb'

我还知道,如果未指定表名,则无法选择相同的列名。请纠正我,如果我错了,请

1 个答案:

答案 0 :(得分:1)

首先获取所有表名,然后像下面这样循环

$con = mysqli_connect("localhost","root","","databaseName");
$listdbtables = array_column(mysqli_fetch_all($con->query('SHOW TABLES FROM databaseName')),0);
foreach ($listdbtables as $key => $value) {
    $sqlqry = "select Name from ".$value;
    $nameResult = mysqli_query($con,$sqlqry);
    while($nam = $nameResult->fetch_array()) {
      echo($nam['Name']);   
    }
}