SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 09.03.2008 12:58:45

Shamil
Участник
Зарегистрирован: 09.03.2008
Сообщений: 7

Не работает поиск по базе

Пытаюсь сделать поиск по базе, но он не срабатывает, пишет что данные не найдены. Сам запрос точно рабочий проверял на другой базе.  Думаю проблема в FULLTEXT таблицы printer. Может кто чего посоветует.

БАЗА ДАННЫХ
-- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Фев 07 2008 г., 12:44
-- Версия сервера: 5.0.45
-- Версия PHP: 5.2.4
--
-- БД: `dbr`
--

-- --------------------------------------------------------

--
-- Структура таблицы `data`
--

CREATE TABLE `data` (
  `id` int(11) NOT NULL auto_increment,
  `printer` text NOT NULL,
  `kartridg` text NOT NULL,
  `resurs` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`),
  FULLTEXT KEY `printer` (`printer`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;

--
-- Дамп данных таблицы `data`
--

INSERT INTO `data` VALUES (1, 'LJ 1010/1012/1015/1020\r\n/1022', 'q2612a', '2000 копий');




                      СКРИПТ ПОИСКА
<?
       
      $result = mysql_query("SELECT * FROM data WHERE  MATCH(printer) AGAINST('$search')",$db);
   
if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору  <br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}

if (mysql_num_rows($result) > 0)

{
$myrow = mysql_fetch_array($result);

do


{

printf ("<table class='lesson' cellspacing='0'>
      <tr>
        <td class='lesson2'><p class='coolmenu_pr'>%s</p></td>
        <td class='lesson3'><p class='coolmenu_pr'>%s</p></td>
        </tr>
    </table>",$myrow["kartridg"], $myrow["printer"]);
   
}
while ($myrow = mysql_fetch_array($result));



}

else
{
echo "<p>Информация по Вашему запросу  не найдена.</p>";
exit();
}

?>

Неактивен

 

#2 09.03.2008 13:06:36

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Не работает поиск по базе

попробуйте добавить в скрипт после подключения к базе
mysql_query("SET NAMES cp1251");

Неактивен

 

#3 09.03.2008 13:43:48

Shamil
Участник
Зарегистрирован: 09.03.2008
Сообщений: 7

Re: Не работает поиск по базе

Все равно не хочет искать.

Неактивен

 

#4 09.03.2008 13:48:58

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Не работает поиск по базе

Возможно в Вашем случае полнотекстовый индекс не подходит. Полнотекстовый поиск ищет по словам - у Вас комбинация символов 'LJ 1010/1012/1015/1020', причем LJ из двух букв, FULLTEXT скорее всего его игнорирует. Удовлетворит ли Вас по производительности прямой поиск в базе?
SELECT * FROM data WHERE  printer like '%$query%'

Неактивен

 

#5 09.03.2008 13:51:25

Shamil
Участник
Зарегистрирован: 09.03.2008
Сообщений: 7

Re: Не работает поиск по базе

Дело в том если я беру готовую базу и вставляю туда эти данные то он прекрасно все находит. Тут что то именно с FULLTEXT но не пойму что.

Неактивен

 

#6 09.03.2008 13:52:33

Shamil
Участник
Зарегистрирован: 09.03.2008
Сообщений: 7

Re: Не работает поиск по базе

Базу делаю в phpMyAdmin может в этом проблема?

Неактивен

 

#7 09.03.2008 14:25:18

Shamil
Участник
Зарегистрирован: 09.03.2008
Сообщений: 7

Re: Не работает поиск по базе

Попробовал Ваш запрос на поиск работает идеально. Большое спасибо за помощь. Я с этим поиском все выходные провозился.

Неактивен

 

#8 09.03.2008 14:51:59

Shamil
Участник
Зарегистрирован: 09.03.2008
Сообщений: 7

Re: Не работает поиск по базе

рано обрадывалься он просто выводит весь столбец "printer" может  я запрос неправильно сделал.   $result = mysql_query("SELECT printer,kartridg FROM data WHERE  printer like '%$query%'",$db);

Неактивен

 

#9 09.03.2008 14:55:37

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Не работает поиск по базе

Прошу прощения, у Вас запрос в переменной $search, а я написал $query
Переменная $query не определена, поэтому сравниваете Вы с %%, % здесь любая последовательность символов

$result = mysql_query("SELECT printer,kartridg FROM data WHERE  printer like '%$search%'",$db);

Неактивен

 

#10 09.03.2008 14:58:48

Shamil
Участник
Зарегистрирован: 09.03.2008
Сообщений: 7

Re: Не работает поиск по базе

СПАСИБО теперь точно работает идеально. :-)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson