#php #mysql
#php #mysql
Вопрос:
В mysql у меня есть что-то вроде:
$currentname = mysql_query("SELECT * FROM posts LIMIT $start, 5 WHERE ");
Как я могу сделать что-то подобное ниже, что работает:
$currentname = mysql_query("SELECT * FROM posts LIMIT $start, 5 WHERE `title` LIKE '%{Hello world}%' || Where `text` LIKE '%{Hello World}%'");
Что-то вроде приведенного выше, что действительно сработает.
Комментарии:
1. Пожалуйста, прочитайте руководство dev.mysql.com/doc/refman/5.7/en/select.html
2. Голосование за закрытие из-за опечатки.
Ответ №1:
Попробуйте это:
$queryResult = mysql_query("SELECT * FROM posts WHERE `title` LIKE '%{Hello world}%' OR `text` LIKE '%{Hello World}% LIMIT $start, 5'");
$currentName = mysql_fetch_assoc($queryResult);
если вы ожидаете много результатов…
while($currentName = mysql_fetch_assoc($queryResult)) {
//your code here...
}
Комментарии:
1.
while(($currentName = mysql_fetch_assoc($queryResult))
— У вас есть дополнительная скобка, которая должна читаться какwhile($currentName = mysql_fetch_assoc($queryResult))
Ответ №2:
Замените ||
на OR
и удалите лишнее WHERE
, которое идет после него. В SQL ||
есть OR
и amp;amp;
есть AND
. Вы можете прочитать больше здесь.
Примечание: Пожалуйста, найдите время для чтения руководств, это абсолютно помогает.
Ответ №3:
Вы можете использовать ИЛИ в MySQL, и он, вероятно, очень подходит для большинства ситуаций.
Однако OR имеет небольшой недостаток с точки зрения производительности, поскольку для каждого запроса OR весь запрос выполняется снова. Я не гуру производительности MySQL, но, похоже, UNION лучше оптимизирован. Итак, в общем, и, по крайней мере, с большим количеством операторов OR вы должны использовать ОБЪЕДИНЕНИЕ, подобное этому:
SELECT your_union_result.* FROM
(
SELECT * FROM posts WHERE `title` LIKE '%{Hello world}%'
UNION
SELECT * FROM posts WHERE `text` LIKE '%{Hello World}%'
) AS your_union_result
ORDER BY your_union_result.order_column
LIMIT $start, 5
Пожалуйста, обратите внимание: в моей версии есть подзапрос. Вам это нужно, если вы хотите упорядочить результат или ограничить общее количество строк. Теперь у вас есть несколько вариантов для получения фактического результата.
Вы можете fetch_assoc(), fetch_array() и так далее строка за строкой. Мне неясно, что вы хотите в качестве фактического результата. $currentname указывает на должность или имя пользователя, но ограничение в $ start, 5, указывает, что вам нужен список.
Продолжайте и читайте http://php.net/manual/en/function.mysql-fetch-array.php и другие функции выборки. Если вам нужна дополнительная помощь, пожалуйста, обновите свой вопрос, чтобы он был немного более конкретным.