繁体   English   中英

如何使用PDO获取PHP中的MySQL数据库列表?

[英]How can I get a list of MySQL databases in PHP using PDO?

我想知道如何使用PDO在PHP中获得MySQL数据库列表,而不必先连接到数据库(我的意思是dsn中没有dbname)?

通常我以前使用函数mysql_list_dbs(),但不再使用mysql。

谢谢尼克·鲁兹。 我举了一个数据库清单的例子:

$user = 'root';
$pass = 'root';
$server = 'localhost';

$dbh = new PDO( "mysql:host=$server", $user, $pass );
$dbs = $dbh->query( 'SHOW DATABASES' );

while( ( $db = $dbs->fetchColumn( 0 ) ) !== false )
{
    echo $db.'<br>';
}

您可以使用

show databases

或对information_schema的查询:

select schema_name from information_schema.schemata
try{
  $DBH = new PDO("mysql:host=localhost", "root", "");
  $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  $DBH->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}catch(PDOException $e) {
  echo "Fail";
}

$rs = $dbo->query("SHOW DATABASES");
while ($h = $rs->fetch(PDO::FETCH_NUM)) {
   echo $r[0]."<br>";
}

类似于Falcon的另一种方法:

该脚本使用foreach代替while,并使用print代替echo来表示数据库名称,并且设置了break标签,因为它将与XML一起使用。 它还使用关联属性(列名),而不是返回行中列的数组索引来显示所需的结果。

假设您已经正确设置了PDO连接,并且= $ dbconn。 在示例中,很多时候使用$ db代替$ dbconn。

$stmt ="SHOW DATABASES";
foreach($dbconn->query($stmt) as $row){
print $row['Database'];echo"<br />";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM