|
|
|
|
|
для: Trianon
(01.06.2006 в 13:42)
| | Ну я в общем-то поля нужные потом добавил, и то же самое получилось))). Просто с синтаксисом проблемы были. | |
|
|
|
|
|
|
|
для: cheops
(01.06.2006 в 11:43)
| | Я очень долго пытался понять, как эта конструкция без имен полей и операций Like будет работать. В конце концов решил, что никак.
Вот эта конструкция более жизнеспособна:
<?
$list= explode(" ", $serch_request);
function map($val) { return "text LIKE '%".mysql_escape_string($val)."%'"; }
$sql = "SELECT * FROM table WHERE " . implode ("\nAND ",
array_map('map', $list)) . " AND hide=1 ORDER BY id DESC";
//echo nl2br($sql);
mysql_query($sql);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(01.06.2006 в 11:43)
| | Понятно. Спасибо. Вот, кстати идея для книжек. Как строить синтаксис повторяющихся запросов. По крайней мере в PHP5 на примерах такого нет. | |
|
|
|
|
|
|
|
для: babilonian
(01.06.2006 в 11:34)
| | Лучше вместо такой схемы (которая вам даст столько же ключевых слов like сколько слов в запросе)
<?php
$sql_arr[]="like '%$request_word%' and ";
$sql=@implode(" ",$sql_arr);
?>
|
писать так
<?php
$sql_arr[]=" '%$request_word%' ";
$sql="SELECT * FROM tbl WHERE ".implode(" AND ",$sql_arr);
?>
|
| |
|
|
|
|
|
|
| Пытаюсь поиск на его основе построить. Если искать одно слово, все нормально. Если два и больше, то говорит, что не соединения с базой. Что мог упустить?
$serch_request – Здесь лежит поисковый запрос
<?
$request_array=explode(" ", $serch_request); // Раскладываем по словам
foreach($request_array as $request_word) // Разбираем массив
{
if(!empty($request_word)) // Если слово есть
{
$sql_arr[]="like '%$request_word%' and "; // Составляем массив запросов
}
}
$sql=@implode(" ",$sql_arr); // Пакуем запросы в кучу
$find_arrcomp=mysql_query("select * from table where text $sql hide='1' order by id desc")or die ("Нет соединения с базой");
?>
|
hide='1' - это неудаленное и не скрытое поле по которому можно искать.
ну id это номер строки
а вот по text как раз и ищем.
И, собственно передаем запрос. Если больше двух слов, лезут ошибки - "Нет соединения с базой". В чем бяда? | |
|
|
|
|