Как насчет использования 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)
Что соответствует таблицам, которые у меня есть в этой базе данных.