Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск по всей базе MYSQL 
:(
    Опции темы
chiffa
Дата 8.2.2008, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 734
Регистрация: 11.11.2003

Репутация: нет
Всего: -1



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

SELECT * FROM base WHERE pole = '***'


невозможно т.к. я по умолчания незнаю название полей котрые присутствуют в той или иной таблице. Можете кто уже реализовывал подобное плииииз поделитесь советом илипримерчиком smile

Перебор по базе делаю так:

Код

<?
include ("mysql.php");

$link = mysql_connect($host, $login_mysql, $password_mysql) or
        die("Could not connect: " . mysql_error());
    mysql_select_db($baza_name);
mysql_query('set names cp1251');
     $table = mysql_list_tables($baza_name);

while ($tab = mysql_fetch_row($table)) {

$res = mysql_query("select * from `$tab[0]`", $link);

$i=0;


while (@mysql_field_name($res, $i))

{

$rows=@$rows . mysql_field_name($res, $i) . ", ";


$i=$i+1;

}

echo "<br>";

echo "<table border=1>";


    $result = mysql_query("SELECT $rows FROM `$tab[0]`");
echo $result."<br>";
    while ($row = @mysql_fetch_array($result, MYSQL_NUM)) {

echo "<tr>";
      for ($z=0; $z<=$i-1; $z++)
      {
   echo "<td>";

      printf ($row[$z]."*********\n");

        echo "</td>";
      }


}

    }

    mysql_free_result($result);
    echo "</table>";
exit;

echo "<br><br>";

 $result="";
 $rows="";
}

?>

PM MAIL   Вверх
flashaa
Дата 8.2.2008, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 2
Всего: 25



можно сделать выборку show tables; - получим имена всех таблиц
затем перебираем каждую таблицу командой desc tbl; - получаем список полей
дальше делается запрос SELECT ... FROM tbl WHERE field1 LIKE "шаблон" OR  field2 LIKE "шаблон" OR field3 ....
или же на каждое поле отдельный запрос.
Получается цикл тройной вложенности.
Может быть удасться сделать оптимальнее

Это сообщение отредактировал(а) flashaa - 8.2.2008, 23:59
PM MAIL   Вверх
skyboy
Дата 9.2.2008, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(flashaa @  8.2.2008,  22:58 Найти цитируемый пост)
Может быть удасться сделать оптимальнее

это точно.
первым в голову приходит: сделать такую структуру БД, чтоб не приходилось искать данные "везде".
чесно говоря, не могу представить, где может понадобиться поиск "по всей базе" не в учебных целях(разобраться с динамическим формированием запросов).
единственный "корректный" вариант применения поиска по всем полям нескольких таблиц: при переводе БД из ненормализованного вида, когда практически однотипные данные храняться в разных полях разных таблиц, в нормализованный вид, где, к тому же, данные с одинаковым значением будут храниться в одном месте. но там не надо делать поиск. просто динамически формировать запросы...
может, поделишься задачей, chiffa?
PM MAIL   Вверх
chiffa
Дата 9.2.2008, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 734
Регистрация: 11.11.2003

Репутация: нет
Всего: -1



задача проста - сделать поиск по всей базе как я и описал smile нужно это для "универсального поисковика" что бы скрипт не обучять структуе базы/таблиц
PM MAIL   Вверх
solenko
Дата 9.2.2008, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 7
Всего: 67



А смысл в таком поисковике? Он же будет
1. Тормозить
2. Выдавать кучу левого
3. Прикольно будет, например, идентификаторы сессий или номера кредиток им находить

Сделайте админку, из которой можно было бы добавлять таблицы/поля в поиск.


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
chiffa
Дата 9.2.2008, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 734
Регистрация: 11.11.2003

Репутация: нет
Всего: -1



solenko, спасибо за идею smile но я лучьше сделаю что бы пользователь запречял по каким таблицам искать smile
PM MAIL   Вверх
flashaa
Дата 9.2.2008, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 2
Всего: 25



Для данных задач БД имхо только мешает автору  smile  Проще все свалить в файл - быстрее и проще будут скрипты работать,чем с таким поиском. 
Гы 
Код

SELECT * FROM *.* WHERE * LIKE '%'

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.