Morterset
Новичок
Дата регистрации:
27.06.2013 08:37:58
Сообщений: 8
Здравствуйте. Задача состоит в том что нужно узнать имена БД на сервере. Затем у этих БД узнать имена таблиц и в конце концов у этих таблиц узнать имена полей.
Я нашел множество запросов.
Все они работают. Но при любом из этих запросов возвращается ассоциативный массив только с именем первой БД или первой таблицы или первого поля.
Запрос возвращает только перво-стоящие имена.
Как мне решить проблему и получить полный массив данных?
Запросы:
use database_name;
show tables;
DESCRIBE table_name;
SHOW COLUMNS FROM table_name;
SELECT table_schema FROM information_schema.columns GROUP BY table_schema;
SELECT table_name FROM information_schema.columns WHERE table_schema = 'mydb' GROUP BY table_name
SELECT column_name, data_type FROM information_schema.columns WHERE table_schema = 'wp230' AND table_name = 'wpvsc_posts';
Avery
Освоившийся
Дата регистрации:
05.05.2013 15:48:09
Сообщений: 37
$link = mysql_connect("localhost", "root", "" or die("Ошибка!"
$db_list = mysql_list_dbs($link);
$row = 0;
$dbs= array();
while ($row < mysql_num_rows($db_list))
{
$dbs[$row]=mysql_tablename($db_list, $row)
}
unset($row);
for ($i = 0;$i < count($dbs);$i++)
{
$mysqli = new mysqli("localhost", "root", "", $dbs[$i])
$r = $mysqli->query("SHOW TABLES"
while($row = mysql_fetch_array($r, MYSQL_NUM))
{
$tables[] = $row[0];
}
$colums = array();
for ($j = 0; $j < count($tables); $j++)
{
$results = $mysqli->query("SHOW COLUMNS FROM `$tables[$j]`"
while($col = mysql_fetch_row($result))
{
$colums[$j] = $col;
}
}
}
Код не проверял, но должен работать. Вам осталось лишь вывести информацию(этот код не выводит). P.S.
http://www.php.su/forum/topic.php?forum=1&topic=232, http://p2k.ru/archives/69, http://htmlweb.ru/php/example/mysql_show_fields.php, http://www.php.su/mysql_connect, http://www.php.su/mysql_list_dbs, http://www.php.su/mysql_num_rows