我想使用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,但这除了输出语句外没有执行任何操作。有什么想法可以做到吗?
非常感谢。
答案 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'];
}
}