Помогите пожалуста разобратся с оператором LIKE в запросе

Eugeniy

Новичок
Помогите пожалуста разобратся с оператором LIKE в запросе

Пробую написать поиск по MySQL
Вот форма для поиска:

PHP:
<form method="POST">

<input type="text" name="searchwords" size="40" tabindex="1">

<select size="1" name="logic" tabindex="2">
    <option value="or">Искать любое из слов</option>
    <option value="and">Искать все слова</option>
    <option value="all">Искать фразу</option>
</select>

<input type="submit" value="Найти" name="search" tabindex="3">

</form>
А это обработчик формы:
PHP:
if ($logic=="or") 
{$zapros="SELECT * FROM news2 ORDER BY rowid DESC LIKE '%". str_replace(" ", "%' OR news LIKE '%", $searchwords). "%'"; }

if ($logic=="and") 
{$zapros="SELECT * FROM news2 ORDER BY rowid DESC LIKE '%". str_replace(" ", "%' AND news LIKE '%", $searchwords). "%'"; }

if ($logic=="all") 
{$zapros="SELECT * FROM news2 ORDER BY rowid DESC LIKE '%" . $searchwords . "%'";}

$link = @mysql_connect($hostname , $username , $password);
if(!$link) { echo("<font color=\"red\"><b>Не могу соеденится с базой!</b></font><br>");}

else {
@mysql_select_db($database);
$query = "$zapros";
$result = @mysql_query($query); 

if( !$result ) { echo("<font color=\"red\"><b>Ошибка при выполнении запроса!</b></font><br>"); exit;}

while($data = mysql_fetch_array($result)) {
$total++; 
} //END OF WHILE 
} //END ELSE
Проблема в том, что он мне выдает:Ошибка при выполнении запроса!

Подскажите пожалйста почему!
 

AlexX

Guest
Помогите пожалуста разобратся с оператором LIKE в запросе

Могу посоветовать одну хорошую вещь.
Перед тем, как выполнить запрос сделай echo запроса и просмотри его полностью. Может где кавычек не будет хватать или последовательность нарушена.
 

AlexX

Guest
Помогите пожалуста разобратся с оператором LIKE в запросе

Да, и еще. При отладке программ лучше не пиать @ перед функциями.
 

Eugeniy

Новичок
Re: Помогите пожалуста разобратся с оператором LIKE в запросе

Автор оригинала: AlexX
Могу посоветовать одну хорошую вещь.
Перед тем, как выполнить запрос сделай echo запроса и просмотри его полностью. Может где кавычек не будет хватать или последовательность нарушена.
Сделал эхо, при поиске $searchwords="поиск слов в базе"
он мне выдал:

SELECT * FROM news2 ORDER BY rowid DESC LIKE '%поиск%' OR news LIKE '%слов%' OR news LIKE '%в%' OR news LIKE '%базе%'

Я просто не знаю синтаксиса оператора LIKE, поэтому прошу подсказать мне где ошибка...
Тех кто посылает в мануал, прошу не отвечать!
 

Eugeniy

Новичок
Автор оригинала: AlexX
Почитай здесь
http://www.webclub.ru/confarchive/5008.html
У тебя лишние слова затисались в запрос.
Вот такой запрос получился:

SELECT * FROM tablename where field LIKE '%search%' ORDER BY id DESC

работает :D
Только вот еще один вопрос:
Можно ли искать по двум и более полям? Если да то как?
 

Liska

Guest

Unregistered

Guest
Автор оригинала: Eugeniy

Только вот еще один вопрос:
Можно ли искать по двум и более полям? Если да то как?
Можно, что-то вроде
PHP:
sql = "SELECT ID_FM, FM_NAME, FM_LAWNAME FROM firm WHERE FM_NAME LIKE '".$stN."%' AND IND_TP = ".$argv[1]." ORDER BY FM_NAME";
Также можно употреблять лог. или (OR)

Но лучше почитай что-нибудь по SQL, найдешь много интересного, например очень понятная книжка SQL Джеймса Грова и Пола Вайнберга.
 

Eugeniy

Новичок
Народ! ну напишите пожалуйста пример!!!!
Как вот здесь:

SELECT * FROM tablename WHERE field LIKE '%search%'

Только с поиском по 2 полям.............
 

Barlone

Guest
Автор оригинала: Eugeniy
Народ! ну напишите пожалуйста пример!!!!
Как вот здесь:

SELECT * FROM tablename WHERE field LIKE '%search%'

Только с поиском по 2 полям.............
SELECT * FROM tablename WHERE field LIKE '%search%' or field2 LIKE '%search%'
 
Сверху