我想知道如何使用PDO在PHP中获得MySQL数据库列表,而不必首先连接到数据库(我的意思是在dsn中没有dbname)?
通常我使用函数mysql_list_dbs(),但我不再使用mysql这种方式
感谢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>';
}
可以使用
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来获取db名称,并设置了与XML相同的break标记。它还使用关联属性,即列名,而不是返回行的列的数组索引来显示所需的结果。
假设您已经正确设置了PDO连接和= $dbconn。在示例中,很多时候使用$db来代替$dbconn。
$stmt ="SHOW DATABASES";
foreach($dbconn->query($stmt) as $row){
print $row['Database'];echo"<br />";
}