поиск в mysql с помощью select where

Iven

Новичок
поиск в mysql с помощью select where

на некороых ресурсах в мануалах предлагается такая команда для поиска
""
// $search - содержит искомый тест
$sql="select * from бд where (locate(lower('$search'),lower(content))>0)";
$result=mysql_query($sql);

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

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
т.е. искомая строка и запись в таблице переводится в верхний регистр и затем производится поиск.
Очень "производительное" решение.

-~{}~ 17.01.09 21:52:

Э?
LOCATE(substr,str), LOCATE(substr,str,pos)
...............
This function is multi-byte safe, and is case-sensitive only if at least one argument is a binary string.

[telepat_mode]
http://www.phpfaq.ru/charset
[/telepat_mode]
 

Iven

Новичок
тогда может подскажете какой выход более функционален, желательно с оглядкой на возможность постраничного выхода ) она у меня просто необычайно функциональна LOL

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

$limit = 5;
$sqlquery='SELECT * FROM categ';
// ф выдачи limit
$page=page($sqlquery,$limit);
$limitValue = ($page * $limit) - $limit;
$result = mysql_query("$sqlquery ORDER BY $sort1 $d1 LIMIT $limitValue, $limit") or die(mysql_error());
$count = mysql_num_rows($result);
for($i=0;$i<$count;$i++)
echo ".... mysql_result($result,$i)...."
// ф постраничной навигации
echo navigation($sqlquery,$limit,$page);
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
тогда может подскажете какой выход более функционален,
Нет смысла вообще использовать lower
строка ведь вряд=ли у тебя binary
 

Фанат

oncle terrible
Команда форума
если база настроена правильно, то поиск и так регистронезависимый, и переводить в нижний регистр не нужно
 

Iven

Новичок
в каком смысле правильно ?
она у меня создается из скрипта и ей придается русс кодировка
как еще нужно натраивать базу ?
 

Iven

Новичок
ага понятно, ну я и так всегда ставил имякодировки_general_ci
так что сразу регистронезависимый поиск идет оказывается, кто бы мог подумать ^^)
тем не менее
$result=mysql_query("select * from categ where (locate('$search',content)>0)");
тоже не работает и с content и когда я прописываю номер либо имя поля, да и вообще там ведь должна быть строка, тоесть туда нада засовывать уже наверно елемент массива

а как на счет такого варианта
http://phpsql.ru/mysql/poleznoe/mysql_search/
только поясните мне пожалуйста что делается здесь
SELECT id FROM categ WHERE field LIKE '%". str_replace(" ", "%' OR field LIKE '%", $good). "%'"
 

Фанат

oncle terrible
Команда форума
так что сразу регистронезависимый поиск идет оказывается, кто бы мог подумать
так идет или нет? ты проверил, без своих хитрозадых конструкций?
тоже не работает и с content и когда я прописываю номер либо имя поля, да и вообще там ведь должна быть строка, тоесть туда нада засовывать уже наверно елемент массива
это на каком языке было?
 

Iven

Новичок
после
$result=mysql_query("select * from categ where (locate('$search',content)>0)");
в $result пусто
если вставить любое значение в content
$result выводит Resource id #6
а mysql_num_rows равен 0

вроде на человеческом языке, ну и соответствующем данному разделу ^^
 

Фанат

oncle terrible
Команда форума
роде на человеческом языке
это не человеческий. это бабуинский какой-то. "нада", "елемент".
где должна быть строка? какой еще элемент массива? при чем здесь вообще какой-то массив?

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

и вообще. если проблема в запросе, то никакого пхп кода в посте быть не должно. только сам запрос и ответ базы. консоль в зубы - и вперед.
 

Iven

Новичок
нда на самом деле работает
$result=mysql_query("select * from categ where (locate('$search',имя поля)>0)");
работает
ну и если не тяжело последний вопрос по этой теме - как правильно сделать сравнение по всем или нескольким полям - тоесть как граматически верно будет where (locate('$search',имя поля)>0) and (locate('$search',имя поля)>0) and (locate('$search',имя поля)>0) или как то в самой locate можно

и объясните пожалуйста код где good искомое слово
SELECT id FROM categ WHERE field LIKE '%". str_replace(" ", "%' OR field LIKE '%", $good). "%'"
из http://phpsql.ru/mysql/poleznoe/mysql_search/
 

Фанат

oncle terrible
Команда форума
то есть, тебе нужно, чтобы искомая строка имелась в каждом поле таблицы?

-~{}~ 18.01.09 15:05:

объяснение про like надо искать не по всяким ламерским сайтам, а в документации по mysql
лучше - в оригинальной, но если совсем плохо, то есть здесь:
http://phpclub.ru/mysql/doc/

-~{}~ 18.01.09 15:07:

проблема твоя в том, что ты смешиваешь PHP и SQL.
а этого делать не надо. SQL запрос - это программа на языке SQL. ты должен уметь составлять эти программы. ты должен ЧЕТКО ЕЁ СЕБЕ ПРЕДСТАВЛЯТЬ.
СНАЧАЛА ты составляешь запрос на SQL.
И только после того, как ты убедился, что запрос верный, и работает - только после этого переходишь к составлению его с помощью PHP. Понятно?
 

Iven

Новичок
Автор оригинала: *****
это не человеческий. это бабуинский какой-то. "нада", "елемент".
где должна быть строка? какой еще элемент массива? при чем здесь вообще какой-то массив?

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

и вообще. если проблема в запросе, то никакого пхп кода в посте быть не должно. только сам запрос и ответ базы. консоль в зубы - и вперед.
спокойно :)
каждый из нас живет в своем собственном бреду и если мой бред в связи с пока что слабым знанием языка програмирования не сходится в понятиях и названиях с вашим бреда то просто скажите что нифига не поняли, попробуйте угадать какая самая глупая проблема у меня могла возникнуть и я буду очень вам благодарен за проявленное внимание и затраченное время , а если ваша догадка совпадет с моей проблемой, то вообще благодарен до небес, фигурально выражаясь

я просто не знал что должен нести в себе параметр content и думал это какая то встроенная переменная обозначающая весь текст таблицы а на ее место оказывается нада помещать имя поля
 

Фанат

oncle terrible
Команда форума
благодарность мне твоя не нужна.
ответ на вопрос нужен тебе, а не мне. поэтому вполне логичным будет, если это ты будешь стараться донести свою мысль. именно это и следует делать, вместо многословных оправданий и просьб.
еще раз повторяю. если твой бред не сходится - надо пытаться формулировать снова, не наспех, в две корявых строчки, а максимально подробно.
 

Iven

Новичок
договорились
строка
$result=mysql_query("select * from categ where (locate('$search',content)>0)"); когда content=имя одного определенного поля работает и выбает mysql_num_rows($result) количество найденных совпадений
как сделать в where поиск по нескольким полям
тоесть чтобы выдало сколько совпадений нашло во всей таблице
 

Фанат

oncle terrible
Команда форума
эта строчка не имеет отношения к SQL. Это программа на языке PHP.
пречитай третье добавление в моем посте выше.
у тебя это стоит на винде?
ищешь mysql.exe и запускаешь
 
Сверху