запрос MySQL сразу к двум полям таблицы

184
12 марта 2019, 13:00

Есть запрос:

$result = mysql_query("SELECT * FROM news WHERE title LIKE '%$search%' ORDER BY $sorting",$link);

Как сделать так, чтобы искал в поле title + в text?

Answer 1
  1. $result = mysql_query("SELECT * FROM news WHERE title LIKE '%$search%' OR text LIKE '%$search%' ORDER BY $sorting",$link);
    
  2. Выбросьте навсегда mysql-функции. Они морально устарели и больше не используются. Если вы их используете, значит у вас уже устаревший php5.

Answer 2

Используйте PDO! И биндите переменные)

$sql = "SELECT * FROM news WHERE title LIKE %$search% OR title LIKE %$search% ORDER BY $sorting";
$result = $db->prepare($sql);
$result->execute();
Answer 3

Во-первых, функции mysql_* в PHP не рекомендуются к использованию (deprecated). Вместо них нужно использовать MySQLi.

Потом, запрос с вставкой переменных в строку чреват уязвимостью к SQL-инъекциям. Сферически в вакууме считается, что нужно привязывать (binding) конкретные значения как аргументы к запросу (в самом запросе указываются параметры). Но это палка о двух концах, поскольку результаты таких запросов не кэшируются MySQL. На выделенном сервере (включая V[DP]S) можно получить хорошую производительность, используя запросы без параметров.

Как сделать так, чтобы искал в поле title + в text?

Можно использовать LIKE и OR, но считается, что полнотекстовые ключи (fulltext index), которые заодно могут объединять несколько полей, работают быстрее.

Далее, это уже не совсем по теме вопроса, но есть максимально простое и достаточно эффективное решение, которым можно значительно увеличить эффективность поиска - стемминг.

Answer 4

Ответ:

$result = mysql_query("SELECT * FROM `news` WHERE `title` LIKE '%$search%' OR `text` LIKE '%$search%' ORDER BY $sorting", $link);

MYSQL - устарел, рекомендую изучить PDO и использовать bindValue дабы избежать SQL инъекции, ибо в вашем запросе это возможно.

READ ALSO
Почему не переходит на другие страницы?

Почему не переходит на другие страницы?

При переходе на любую другую страницу, вываливается ошибка: Sorry, the page you are looking for could not be found

148
Ошибка "Undefined offset:

Ошибка "Undefined offset:

вот такая ошибка у меня ErrorException in SteamAuthphp line 206: Undefined offset: 1 Тут весь код ошибок: http://prntscr

177
Warning: mysqli_connect()

Warning: mysqli_connect()

Не получается подключится к базе данных Есть два файла, первый:

151
Вывести строки таблицы БД firebird через PHP

Вывести строки таблицы БД firebird через PHP

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

168