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,则需要牢记更多,但仍然值得一提。
干杯。
我想使用 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,则需要牢记更多,但仍然值得一提。
干杯。