我想知道如何使用PDO在PHP中获取MySQL数据库列表而不必先连接到数据库(我的意思是dsn中没有dbname)?
通常我以前使用函数mysql_list_dbs()但我不再用这种方式使用mysql。
答案 0 :(得分:15)
感谢nick rulez。 我举了一个DB列表的例子:
$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>';
}
答案 1 :(得分:13)
您可以使用
show databases
或对information_schema的查询:
select schema_name from information_schema.schemata
答案 2 :(得分:1)
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>";
}
答案 3 :(得分:0)
另一种类似于Falcon的方法:
此脚本使用foreach而不是while而打印而不是echo作为db名称,并设置break标记,因为它将与XML一起使用。它还使用关联属性(列名),而不是返回行中列的数组索引来显示所需的结果。
这假设您正确设置了PDO连接并且= $ dbconn。在示例中,很多时候使用$ db而不是$ dbconn。
$stmt ="SHOW DATABASES";
foreach($dbconn->query($stmt) as $row){
print $row['Database'];echo"<br />";
}