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 » » Вопросы новичков » Запрос

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

1. event - 25 Марта, 2012 - 22:47:07 - перейти к сообщению
Привет.
Есть такой запрос:

SQL:
скопировать код в буфер обмена
$res = mysql_query("SELECT b.*, users.class, users.username FROM blog AS b LEFT JOIN users ON b.owner = users.id ORDER BY ID DESC $limit") or sqlerr(__FILE__, __LINE__);


Есть переменная $blude которая содержит слово, нужно добавить к запросу, что бы он выбирал лишь те записи, где в ячейке tags содержится то слово которое записано в переменной $blue, походу что-то типа LIKE нужно сделать...

Пример содержащего ячейки tags: 1, 2, 3, 4, 5, тип ячейки text
2. Bio man - 25 Марта, 2012 - 23:03:26 - перейти к сообщению
MyISAM + полнотекстовый индекс + MATCH ... AGAINST. При большом количестве записей искать будет долго (с использованием LIKE).
3. event - 25 Марта, 2012 - 23:21:49 - перейти к сообщению
Bio man
Нифика не понял... Не понял

Большое количество записей это сколько?

Ну там примерно у меня по 300-700 в год будет. И у меня постраничная навигация, на одной страничке по 7, так что думаю нагрузки и обрабатываться скоро будет.
4. Bio man - 25 Марта, 2012 - 23:34:36 - перейти к сообщению
В общем чем больше записей тем дольше будет поиск по не индексированному тексту. Будет тупо перебор всех записей и в каждой будет искать нужный текст. Но, FULLTEXT INDEX поддерживает только движок MyISAM. Примерный запрос на создание индекса (ТОЛЬКО ДЛЯ MyISAM)
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE FULLTEXT INDEX ftIndex ON table_name (COLUMN);

Сам поиск
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM table_name WHERE MATCH (COLUMN)
  2. AGAINST ('$blude' IN_NATURAL_LANGUAGE_MODE)

Есть еще IN_BOOLEAN_MODE, про это можно почитать самостоятельно.
5. event - 25 Марта, 2012 - 23:40:37 - перейти к сообщению
Дай пример с лайком плиз...
6. Bio man - 25 Марта, 2012 - 23:49:58 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table_name` WHERE `column` LIKE '%$blude%'
7. event - 25 Марта, 2012 - 23:51:45 - перейти к сообщению
А чего Вы все на этом форуме постоянно ставите `?
8. Bio man - 25 Марта, 2012 - 23:54:42 - перейти к сообщению
event пишет:
А чего Вы все на этом форуме постоянно ставите `?
Это ограничители, их рекомендуется ставить всегда. Пример SELECT user id даст ошибку, а SELECT `user id` выполнится без проблем. В MSSQL ими являются [], если это вам о чем то говорит
1000 постов Радость
9. DelphinPRO - 25 Марта, 2012 - 23:58:06 - перейти к сообщению

event пишет:
А чего Вы все на этом форуме постоянно ставите `?

ну как бы SQL синтаксис такой.

(Добавление)

Bio man пишет:
1000 постов

Больше не отвечай ничего. Красивая цифра. Улыбка

ну или до 1024 догони Улыбка

 

Powered by ExBB FM 1.0 RC1