Синтаксис PHP и Mysql || ‘или’?

#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 и другие функции выборки. Если вам нужна дополнительная помощь, пожалуйста, обновите свой вопрос, чтобы он был немного более конкретным.