[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: MySQL и where
htaccess
Всем снова привет! Продолжаю писать скрипт поисковой системы.
Допусти, имеется бд и таблица следующего содержания :

keyword_id__|___keyword___|___link_id
_____1__________home__________1
_____2___________news__________2
_____3_______good games for you__3

Делаю выборку путём запроса :

$sql = mysql_query("SELECT link_id FROM keywords WHERE keyword_id > 4");


Этим я научился баловаться.

Вопрос, можно ли в опции "WHERE" указать не значение а некую строку, которую сравниваем с содержимым, и если она содержится где то в этом поле, не обязательно в начале и в конце, либо часть этой строки, то тогда записываем её в результат.

По сути мне мне нужно регулярное выражение, но ведь так здесь нельзя делать, придётся читать каждую строку и сравнивать?



Спустя 17 минут, 25 секунд (22.09.2010 - 21:00) waldicom написал(а):
LIKE %ВАШ-ТЕКСТ%

Спустя 1 минута, 3 секунды (22.09.2010 - 21:01) Dingo написал(а):

$sql = mysql_query("SELECT link_id FROM keywords WHERE keyword LIKE %ci%

http://www.sql-tutorial.net/SQL-LIKE.asp

Спустя 9 часов, 51 минута, 37 секунд (23.09.2010 - 06:52) htaccess написал(а):
Спасибо, изучаю)

Спустя 3 часа, 34 минуты, 50 секунд (23.09.2010 - 10:27) htaccess написал(а):
Вот прочитал про LIKE.
Есть некоторые успехи, но вот такая проблема :
В базе есть значения :
lady gaga alejandro
lady gaga just dance
lady gaga bad romance

И при запросе : LIKE '%lady%gaga%'
Выводится только первое подходящее, хотя %lady%gaga% встречается во всех трёх случаях. Как сделать так, чтобы все результаты были выведены?
Я знаю, что в ответ на запрос приходит следующий массив :
Array ( [0] =>148
[link_id] =>148
[1] => lady gaga alejandro
[keyword] => lady gaga alejandro
)
Хотелось бы получить все результаты.

Спустя 17 минут, 45 секунд (23.09.2010 - 10:45) waldicom написал(а):
LIKE '%ladygaga%'
LIKE '%lady_gaga%'

Спустя 15 минут, 18 секунд (23.09.2010 - 11:00) htaccess написал(а):
LIKE '%ladygaga%' - ничего
LIKE '%lady_gaga%' - 1 вариант

Есть ещё какие нибудь предложения?

Спустя 21 минута, 30 секунд (23.09.2010 - 11:22) philimon написал(а):
Видимо, Вашему запросу соответствует одна запись в базе. Покажите запрос полностью

Спустя 9 минут, 17 секунд (23.09.2010 - 11:31) SlavaFr написал(а):
_ означает одна буква
% озночает 0 или много букв.

больше от LIKE ничего вытянуть не плучется.

Есть более медленные варианты которые работают с регулярными выражениями, например RLIKE

в твоем случае '%lady%gaga%' в полне достаточно, я предпологаю, что @philimon прав или ты просто неправильно вытягиваеш результаты в цикле .

Спустя 21 минута, 12 секунд (23.09.2010 - 11:52) htaccess написал(а):
Скорее всего я не правильно.
Вот смотрите, когда использую mysql_result(запрос, номер)
Всё правильно возвращает. А вот когда mysql_fetch_array() :

$sql = mysql_query("SELECT link_id, keyword FROM keywords WHERE keyword LIKE '%lady%gaga%'");
$result = mysql_fetch_array($sql);
$count = mysql_num_rows($sql);

for ($i=0;$i<$count;$i++) {
echo '<a href="?list=redirect&amp;link_id='.$result[$i+$i].'">'.$result[$i+1].'</a><br />';
}

Здесь возвращает только 1 результат.

Спустя 21 минута, 20 секунд (23.09.2010 - 12:14) SlavaFr написал(а):

$result = mysql_query("SELECT link_id, keyword FROM keywords WHERE keyword LIKE '%lady%gaga%'")
or die(mysql_error());
while($strochka = mysql_fetch_assoc($result){
echo '<a href="?list=redirect&link_id='.$strochka['link_id'].'">'.$strochkat['keyword'].'</a><br />';
}


edit: подкоректировал ошибку, которую подметил @netruxa

Спустя 6 минут, 13 секунд (23.09.2010 - 12:20) netruxa написал(а):
только в первой строке не $result = ... а $sql = ... тогда уж

Спустя 21 секунда (23.09.2010 - 12:20) htaccess написал(а):
Я так понимаю ассоциативный массив получается? А можно с помощью FOR читать, а то нужен учёт количества.

Спустя 17 минут, 1 секунда (23.09.2010 - 12:37) htaccess написал(а):
Разобрался. Ребят спасибо вам большое!
Этот форум находка для меня, напишу поисковик, ссылку на вас обязательно поставлю)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.