从服务器上每个数据库的一个表中选择数据

时间:2019-03-20 00:24:58

标签: php mysql select echo

我想使用PHP获取服务器上特定帐户上所有数据库的列表,因此我使用了从此链接中获取的以下PHP / MySQL: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>";
}

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

因此,在while {}内,我尝试放置SELECT语句:

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

,然后回显$ sql,但这除了输出语句外没有执行任何操作。有什么想法可以做到吗?

非常感谢。

2 个答案:

答案 0 :(得分:1)

正如我在评论中所说

  

首先,您需要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,则需要牢记更多,但仍然值得一提。

干杯。

答案 1 :(得分:0)

类似的事情应该起作用:

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'];
    }
}