#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 действительно после того, как я добавил комментарий к этому!!