Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: PHP - несколько вопросов
Показать сообщение отдельно

Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Цитата:
"SELECT id FROM CoreLibrary WHERE title LIKE '%". str_replace(" ", "%' OR title LIKE '%", $good). "%'"
Выбрать столбец id из таблицы CoreLibrary, где запись в столбце title совпадает с маской поиска (LIKE). Маска поиска состоит из строки запроса ($good), где функцией php str_replace() заменяются пробелы на знаки процента, которые дополнительно добавляются в начале и в конце строки. Знак процента в SQL означает "любые символы". Как * в Windows. Также к результатам добавляются строки (OR), где идёт поиск только по заданной строке, хотя я не вижу в этом смысла - всё равно ведь % их найдёт.
Но согласен, скобки стоят странно. Было бы правильнее расставить их так:
Цитата:
"SELECT id FROM CoreLibrary WHERE title LIKE '%". str_replace(" ", "%", $good) . "%' OR title LIKE '". $good . "'"
Второй запрос:
Цитата:
"SELECT *, MATCH row1 AGAINST ('$search')+MATCH row2 AGAINST ('$search')+MATCH row3 AGAINST //('$search') as relev FROM CoreLibrary ORDER BY relev DESC"
Да, здесь посложнее.
SELECT *, ... - выбрать все строки, удовлетворяющие условию, и справа добавить столбец relev - релевантность поиска (по нему потом идёт сортировка).
MATCH колонка AGAINST ('строка поиска') - полнотекстовый поиск по столбцу. Таблицы должны иметь индекс для полнотекстового поиска. Видимо, здесь идут три подзапроса по разным столбцам, потом им задаётся общее имя (AS relev) и по этой колонке (ORDER BY relev) уже сортируется по убыванию (DESC).
Хотя странно выглядит)

Подробнее о полнотекстовом поиске можете почитать здесь, если интересно. Я не совсем разобрался =~_~=
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:14, 10-08-2009 | #13

Название темы: PHP - несколько вопросов