Эквивалентный из mysql_list_tables в PHP PDO?

Все основания, перепетые другими уже; одно дополнительное примечание:

, Если Вы делаете это:

/**
 * This method currently launches the blaardh into the bleeyrg.
 */
void execute() { ... }

Рассматривают изменение его в это:

void launchBlaardhIntoBleeyrg() { ... }

Это может казаться немного очевидным, но во многих случаях возможность легко упустить в Вашем собственном коде.

Наконец имеют в виду, что изменение не всегда требуется; например, поведение метода, как могут ожидать, будет развиваться со временем (отмечайте слово "в настоящее время" в JavaDoc).

5
задан saintsjd 20 September 2009 в 18:52
поделиться

3 ответа

А как насчет использования запроса 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)

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

19
ответ дан 18 December 2019 в 07:10
поделиться

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

2
ответ дан 18 December 2019 в 07:10
поделиться

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

1
ответ дан 18 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: