php поиск в MySQL
$sql="select * from * where (locate('$search', name)>0)";
$result = mysql_query($sql, $link);
$search - это слово, вхождение которого ищу, но запрос ничего не даёт, может кто подскажет, как надо?
Не работает и $sql="select * from Monitor, Acsessuary where (locate(lower('$search'), lower(name))>0)";
Но работает при $sql="select * from Monitor where (locate(lower('$search'), lower(name))>0)";
а надо чтоб из всех таблиц, их порядка 13 штук.
$sql="SELECT * FROM table WHERE name like '%".$search."%';";
или
$sql="SELECT * FROM table WHERE lower(name) like lower('%".$search."%');";
Почитай про like :)
$sql="SELECT * FROM table WHERE name like '%".$search."%';";
или
$sql="SELECT * FROM table WHERE lower(name) like lower('%".$search."%');";
Для одно таблицы работает и то, что я указал выше, т.е. Locate, а вот для нескольких не хотелось бы создавать цикл, поэтому вопрос заключается в том, можно ли создать один запрос из нескольких таблиц?
Кстати, заметил, что при Locate учитывается регистр букв даже при использовании Lower, так что пришлось использовать Like. С ним проблем нет.
Для одно таблицы работает и то, что я указал выше, т.е. Locate, а вот для нескольких не хотелось бы создавать цикл, поэтому вопрос заключается в том, можно ли создать один запрос из нескольких таблиц?
Кстати, заметил, что при Locate учитывается регистр букв даже при использовании Lower, так что пришлось использовать Like. С ним проблем нет.
И для двух, и даже для десяти работает.
Просто когда делаешь выборку из двух таблиц, указывай поле как таблица.поле.
А вообще, тебе бы строил про реляционные базы данных почитать, потом как у тебя в твоем запросе будет произведено декартово произведения, так как не прослеживается связь по полям:
Вот например две таблицы:
tbl1:
f1 f2
1 aaa
2 bbb
tbl2:
f1 f2
1 111
2 222
Запрос:
SELECT * FROM tbl1, tbl2
выдаст декартово произведение:
f1 f2 f1 f2
1 aaa 1 111
1 aaa 2 222
2 aaa 1 111
2 aaa 2 222
а запрос:
SELECT * FROM tbl1, tbl2 WHERE tbl1.f1=tbl2.f1;
1 aaa 111
2 bbb 222
Таким образом тебе надо написать вот так:
$sql="SELECT * FROM tbl1, tbl2 WHERE (tbl1.name like '%".$search."%' OR tbl2.name like '%".$search."%') AMD tbl1.key=tbl2.key;";
и плюс еще как-то связь между таблицами обозначить.
Если тебе нужно искать независимо в двух таблицах, то придется искать по очереди.