我想知道如何在使用PDO时,在不需要先连接到数据库的情况下(即dsn中没有dbname),通过PHP获取MySQL数据库列表。
通常,我会使用函数mysql_list_dbs(),但我不再以这种方式使用mysql。
感谢nick rulez。 我制作了一个数据库列表的示例:
$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
information_schema
给予肯定。 - Charlestry{
$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来显示数据库名称,并将断点设置为与XML一起使用的方式。它还使用了关联属性,即列名,而不是返回行中列的数组索引来显示所需的结果。
这假定您已经正确设置了PDO连接并且= $dbconn。在示例中,很多时候会使用$db而不是$dbconn。
$stmt ="SHOW DATABASES";
foreach($dbconn->query($stmt) as $row){
print $row['Database'];echo"<br />";
}
show databases
; 但是,你仍然需要至少登录到数据库服务器并创建连接。 - Eli