Найти в БД таблицы содержащие заданное поле

P
На сайте с 06.01.2009
Offline
601
1073

Добрый вечер. Кто подскажет, так грамотно или может быть есть другое решение? Спасибо


// подключились к бд
$res = mysql_query("select table_name from information_schema.tables where table_type = 'base table' and table_schema='stroy581_pk'");
while ($row = mysql_fetch_array($res, MYSQL_NUM)) {
$resultat=mysql_query("show columns FROM $row[0] where `Field` = 'urlstranizi'");
while ($dfg = mysql_fetch_array($resultat, MYSQL_NUM)) {
if ($dfg[0]===urlstranizi) {echo "<br>$row[0]";}
}
}

Этот код у меня будет выполняться при каждом запросе, так как среди таблиц надо выбрать таблицы где есть поле с урлом и потом в таблицах проверить поле 'urlstranizi' на существование текущего урла...

ps ещё короче задача - пройтись по всем таблицам и проверить их поле urlstranizi на существование некоторого урл

вариант №2


// вариант2, цикла
$result = mysql_list_tables('stroy581_pk');
while ($fff = mysql_fetch_array($result, MYSQL_NUM)) {
$resultats=mysql_query("show columns FROM $fff[0] where `Field` = 'urlstranizi'");
while ($sss = mysql_fetch_array($resultats, MYSQL_NUM)) {
if ($sss[0]===urlstranizi) {echo "<br>$fff[0]";}
}
}

Не знаю какой правльнее, да и вообще нормально ли так.

IL
На сайте с 20.04.2007
Offline
435
#1
postavkin:
или может быть есть другое решение?

Хранить все urlstr.. в одной таблице.. в ней же модуль/имя файла/плагин.. хранить, который за вывод отвечает..

возможно, не url-ом, а регуляркой..

возможно, не в таблице, а в массиве..

повторюсь... попробуйте посмотреть, как сделано у других. Роутинг уже давно придумали до нас :)

так как среди таблиц надо выбрать таблицы где есть поле с урлом и потом в таблицах проверить поле 'urlstranizi' на существование текущего урла...

А они как часто меняются? Как правило, структура базы более-менее постоянна.. Если не фиксированная, то хотя бы кэшировать..

postavkin:
да и вообще нормально ли так.

Нормально.. набьются шишки.. потом перепишете..

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
P
На сайте с 06.01.2009
Offline
601
#2
ivan-lev:
Хранить все urlstr.. в одной таблице..

Да, была такая мысль, но пока не освоил, как заполняя таблицу 1 или 2, данные из поля urlstr этих таблиц, должны попадать в одну общую, где будут вестись все урлы. Понятно, что есть вариант сразу вести таблицу со всеми урлами, но тогда я пока не понял, как привязать к тому или иному урлу в какую таблицу смотреть дальше....таблицу с данными (раздел). Ушел думать. спасибо

---------- Добавлено 25.10.2012 в 00:13 ----------

ivan-lev:
А они как часто меняются? Как правило, структура базы более-менее постоянна.. Если не фиксированная, то хотя бы кэшировать..

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

---------- Добавлено 25.10.2012 в 00:14 ----------

ivan-lev:
повторюсь... попробуйте посмотреть, как сделано у других. Роутинг уже давно придумали до нас :)

Согласен, но никто ведь не показывает свой код, свои таблицы, БД.

Про роутинг почитаю. Спасибо.

IL
На сайте с 20.04.2007
Offline
435
#3
postavkin:
Согласен, но никто ведь не показывает свой код, свои таблицы, БД.

github.com =) 27 млн результатов

D
На сайте с 14.01.2007
Offline
153
#4
postavkin:
Таблицы меняться не будут, будут только появляться новые (с появлением новых разделов на сайте).

что для вас "новый раздел"?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий