Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: запрос на поиск слова
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » запрос на поиск слова

Страниц (2): [1] 2 »
 

1. LIME - 30 Июня, 2011 - 13:30:39 - перейти к сообщению
помогите пжлст составить запрос на поиск слова в тексте в БД
есть БД из 100 строк
2 поля NAME (имя статьи) и TEXT (сама статья)
первичный ключ поле NAME
надо выбрать все статьи и их названия где встречается слово $wrd
пробую такой запрос
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $query=" SELECT NAME,TEXT FROM marketing
  3.        WHERE MATCH (NAME,TEXT) AGAINST ('$wrd')";
  4. $result = mysqli_query($res,$query)
  5.     or die("Invalid query: " . mysqli_error()); // 12 строка
  6.  

пхп выдает : Warning: mysqli_error() expects exactly 1 parameter, 0 given in W:\home\localhost\www\test\search.php on line 12
Invalid query:


пробую проверить запрос в phpmy admin выдает вот что
2. EuGen - 30 Июня, 2011 - 13:36:18 - перейти к сообщению


http://phpfaq[dot]ru/debug
3. LIME - 30 Июня, 2011 - 14:27:38 - перейти к сообщению
EuGen ладно с php я разберусь как-нибудь
а что делать с выводом phpmyadmin?
видимо запрос неправильно составлен?
4. EuGen - 30 Июня, 2011 - 14:36:24 - перейти к сообщению
не могу сказать - Вы же не предоставили дамп запроса.
5. LIME - 30 Июня, 2011 - 14:41:49 - перейти к сообщению
EuGen как это сделать?
6. EuGen - 30 Июня, 2011 - 14:45:42 - перейти к сообщению
var_dump($query);
7. LIME - 30 Июня, 2011 - 14:58:13 - перейти к сообщению
EuGen
вот дамп
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. string(84) "SELECT NAME,TEXT FROM marketing WHERE MATCH (NAME,TEXT) AGAINST ('ролевой')"
  3. Warning: mysqli_error() expects exactly 1 parameter, 0 given in W:\home\localhost\www\test\search.php on line 26
  4. Invalid query


вот код
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $query="SELECT NAME,TEXT FROM marketing
  3.        WHERE MATCH (NAME,TEXT) AGAINST ('$wrd')";
  4.                 var_dump($query);
  5.         $result = mysqli_query($res,$query)
  6.     or die("Invalid query: " . mysqli_error());  
//26 строка
8. EuGen - 30 Июня, 2011 - 15:02:31 - перейти к сообщению
Исправьте ошибку в вызове mysqli_error и посмотрите на вывод этой функции
9. LIME - 30 Июня, 2011 - 15:05:53 - перейти к сообщению
исправил mysqli_error()
теперь выдает следующее
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. string(84) "SELECT NAME,TEXT FROM marketing WHERE MATCH (NAME,TEXT) AGAINST ('ролевой')" Invalid query: Can't find FULLTEXT index matching the column list

(Добавление)
EuGenэто может быть изза отсутствия поля ID ?
я сделал только 2 поля и первичным NAME типа VARCHAR
(Добавление)
искомое слово там точно есть
10. EuGen - 30 Июня, 2011 - 15:10:43 - перейти к сообщению
LIME пишет:
Can't find FULLTEXT index matching the column list

У Вас нет в таблице индекса по двум указанным колонкам. Создайте его
11. LIME - 30 Июня, 2011 - 15:12:53 - перейти к сообщению
подробнее пжлст
что значит индекс по колонкам? еще одно поле ? как часто бывает делают ID ?
12. EuGen - 30 Июня, 2011 - 15:15:01 - перейти к сообщению
ALTER TABLE marketing ADD FULLTEXT(`NAME`,`TEXT`);
13. LIME - 30 Июня, 2011 - 15:29:44 - перейти к сообщению
коечто прочел погуглив об этом
кажется понял но вот вопросы
индексировать следует 1 раз при создании таблицы и последующих добавлениях/удалениях?
при переносе таблицы индексация сохраняется?
14. EuGen - 30 Июня, 2011 - 15:33:29 - перейти к сообщению
Таблица (вместе со всеми индексами) определяется только один раз.
15. LIME - 30 Июня, 2011 - 18:46:18 - перейти к сообщению
EuGen спасибо большое все получилось только осталась небольшая проблемка
сам не могу разобратся нужна ваша помощь
не все слова из текста находит
при этом довольно часто попадаются при выводе найденой по искомому слову статьи какието квадратики
я так понимаю это какието символы в другой кодировке?
возможно и слова не все поэтому находит? возможно внутри них в базе есть неотображаемые символы?

 

Powered by ExBB FM 1.0 RC1