Может ли у вас быть ИЛИ в операторе WHERE внутри запроса mysql?

#mysql #where

#mysql #where-предложение

Вопрос:

Возможно ли иметь ИЛИ внутри оператора WHERE в запросе mysql, как я сделал ниже.

 $query = mysql_query("SELECT * FROM fields WHERE post_id=$id OR post_id="" order by id desc") or die(mysql_error());
  

Это приводит к ошибке сервера при запуске на моем сайте. Есть какие-либо мысли о том, как я мог бы это сделать?

Заранее спасибо.

Комментарии:

1. здравствуйте, меня не будет за компьютером в течение следующих 20 минут или около того, поэтому я не смогу ответить на ваши вопросы.

2. Ах, оказывается, ошибка была из-за двух экземпляров двойных кавычек.

Ответ №1:

Да, у вас может быть ИЛИ. Какой тип post_id ?

Если post_id — это символьный тип:

 "SELECT * FROM fields WHERE post_id='$id' OR post_id='' order by id desc"
  

Если это целое число, то оно не может быть равно пустой строке. Вы имели в виду post_id IS NULL вместо этого?

Ответ №2:

В чем ошибка? Похоже, вы не избежали двойной кавычки в запросе. Это должно быть:

 $query = mysql_query("SELECT * FROM fields WHERE post_id=$id OR post_id="" order by id desc") or die(mysql_error());
  

Комментарии:

1. Либо id является строкой, и в этом случае оба экземпляра должны быть заключены в кавычки, либо это int , и в этом случае все равно неплохо иметь оба экземпляра в кавычках. Но этот код не имеет смысла, потому что int никогда не может быть равен "" .

2. Я должен был использовать одинарные кавычки. И я думаю, что я сделаю, чтобы автоматически присвоить post_id значение 0, когда оно не имеет значения, вместо того, чтобы просто оставлять его пустым. Это должно решить эту проблему.

3. @codedude: почему бы не использовать NULL, когда у него нет значения? Для этого и нужен NULL .

Ответ №3:

в чем ошибки .. как таковой запрос ur прекрасен, но проблемы с u string со всеми этими двойными кавычками.. попробуйте что-то вроде этого..

 $query = mysql_query("SELECT * FROM fields 
           WHERE post_id = " . $id . " OR post_id='' order by id desc") 
         or die(mysql_error());
  

Комментарии:

1. возможно, вам потребуется добавить одинарные кавычки вокруг $id, если это строковый тип, подобный этому .. $query = mysql_query(«ВЫБРАТЬ * ИЗ полей, ГДЕ post_id = ‘» . $id . «‘ ИЛИ post_id=» порядок по идентификатору desc») или die(mysql_error());

2. -1 потому что post_id не может быть int и string одновременно.

3. @johan действительно после того, как я добавил комментарий к этому!!