Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

show databases

или запрос на information_schema:

select schema_name from information_schema.schemata

Ответ 2

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

Ответ 3

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

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

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

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

Ответ 4

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>";
}

Ответ 5

В 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";
}