Как я могу получить список баз данных MySQL в PHP с помощью PDO?

Интересно, как я могу получить список баз данных MySQL в PHP с использованием PDO без необходимости сначала подключаться к базе данных (я не имею в виду dbname в dsn)?

Обычно я использовал функцию mysql_list_dbs (), но я больше не использую mysql таким образом.

Solutions Collecting From Web of "Как я могу получить список баз данных MySQL в PHP с помощью PDO?"

Вы можете использовать

 show databases 

или запрос на информационную страницу:

 select schema_name from information_schema.schemata 

Спасибо, ник 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>'; } 

Другой метод, похожий на Falcon's:

Этот сценарий использует foreach вместо while и вместо echo используется для имен db, а тэг break устанавливается так, как он будет использоваться с XML. Он также использует ассоциативное свойство, имя столбца, а не индекс массива столбца в возвращаемой строке для отображения желаемого результата.

Это предполагает, что вы правильно настроили соединение PDO и = $ dbconn. В примерах вместо $ dbconn используется много раз $ db.

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

В PHP версии 5.4.0 вы можете использовать mysql_list_dbs() :

 $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); $db_list = mysql_list_dbs($link); while ($row = mysql_fetch_object($db_list)) { echo $row->Database . "\n"; }