Как я могу получить список баз данных MySQL в PHP, используя PDO? - PullRequest
13 голосов
/ 23 апреля 2011

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

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

Ответы [ 4 ]

15 голосов
/ 20 февраля 2012

Спасибо, Ник Рулез.Я сделал пример листинга БД:

$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>';
}
13 голосов
/ 23 апреля 2011

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

show databases

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

select schema_name from information_schema.schemata
1 голос
/ 18 декабря 2015
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>";
}
0 голосов
/ 07 августа 2013

Еще один метод, похожий на сокол:

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

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

$stmt ="SHOW DATABASES";
foreach($dbconn->query($stmt) as $row){
print $row['Database'];echo"<br />";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...