Эквивалент mysql_list_tables в PHP PDO? - PullRequest
5 голосов
/ 20 сентября 2009

При использовании PHP PDO для доступа к базе данных, есть ли способ перечислить все таблицы в базе данных?

Что-то вроде mysql_list_tables () - это то, что нужно.

Ответы [ 4 ]

19 голосов
/ 20 сентября 2009

Как насчет использования SQL-запроса, который делает что-то вроде этого:

show tables

Или, при необходимости, указав базу данных:

show tables from crawler

И, если вы хотите получить только несколько таблиц:

show tables from crawler like 'site%'


На самом деле, даже если функция mysql_list_tables() существует, ее страница руководства содержит:

Эта функция устарела. это предпочтительнее использовать mysql_query() для выдать заявление SQL SHOW TABLES [FROM db_name] [LIKE 'pattern'] вместо этого.

Итак, я думаю, с PDO все будет в порядке.


И, тестирование с PDO:

$db = new PDO('mysql:dbname=crawler;host=127.0.0.1', 'crawler', 'crawler');
$result = $db->query("show tables");
while ($row = $result->fetch(PDO::FETCH_NUM)) {
    var_dump($row[0]);
}

Я получаю такой вывод:

string 'headers' (length=7)
string 'headers_sites' (length=13)
string 'headers_sites_0' (length=15)
...
string 'headers_sites_7' (length=15)
string 'reporting_sites_servers_software' (length=32)
string 'servers' (length=7)
string 'sites' (length=5)
string 'sites_0' (length=7)
...
string 'sites_servers' (length=13)
string 'sites_software' (length=14)
string 'software' (length=8)

Что соответствует таблицам, которые у меня есть в этой базе данных.

2 голосов
/ 21 сентября 2009

Если вам нужен портативный способ запроса схемы, вы можете использовать стандарт ANSI INFORMATION_SCHEMA

1 голос
/ 20 сентября 2009

Если вы хотите сделать это кроссплатформенным способом, посмотрите на Zend Framework Zend_Db, который предоставляет listTables() метод

0 голосов
/ 29 января 2014
$alltables=$db->query("SHOW TABLES",PDO::FETCH_NUM);

while($result=$alltables->fetch()){

echo $result[0].'<br/>';
}

Наверное, это именно тот код, который вам нужен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...