SELECT 服务器上每个数据库中一个 table 的数据

SELECT data from one table in each database on server

我想使用 PHP 获取服务器上特定帐户的所有数据库的列表,所以我使用了以下 PHP/MySQL 取自此 link 的内容:PHP - Get list of databases names

$db_conn = mysqli_connect('localhost', 'username', 'password');
//get a list of databases in the account
$result = mysqli_query($db_conn,"SHOW DATABASES"); 
//display results
while ($row = mysqli_fetch_array($result)) { 
    echo "database name - ".$row[0]."<br>";
}

这部分工作正常。但是我现在想在每个数据库中获取 table 中一个特定行的值,所有数据库都包含完全相同的 table,因此也包含相同的行。

所以在 while { } 里面我试着放一个 SELECT 语句:

$sql = "SELECT option_value FROM sweb_options WHERE option_name = 'siteurl'";

然后回显 $sql 但这除了输出语句外没有做任何事情。请问我该怎么做?

非常感谢。

像这样的东西应该可以工作:

while ($row = mysqli_fetch_array($result)) { 
    $sql = "SELECT option_value FROM {$row[0]}.sweb_options WHERE option_name = 'siteurl'";
    $result2 = mysqli_query($db_conn, $sql);
    // check for success in case table doesn't have option_value column
    if ($result2) {
        $row2 = mysqli_fetch_assoc($result2);
        echo $row2['option_value'];
    }
}

正如我在评论中所说

Well first of all you need FROM {database}.sweb_options

while ($row = mysqli_fetch_array($result)) { 
    $sql = "SELECT option_value FROM `{$row[0]}`.`sweb_options` WHERE option_name = 'siteurl'";
}

否则它将使用你连接到这个 mysqli 实例的任何数据库

所以基本上就是告诉它你想要哪一个。您还可以在 MySQL 中跨多个数据库执行联接和联合,但这并非对所有数据库都是如此。如果您使用 PDO 而不是 mysqli,则需要牢记更多,但仍然值得一提。

干杯。