условие if в предложении where в MySQL + PHP

0

У меня есть переменная в PHP. Я хочу проверить мою переменную PHP в запросе MySQL и, если она не равна нулю, использовать ее в предложении where.

select * from T1
where post = "news" and  $city = cityname and $city is not null 

$city - это переменная PHP.

У меня проблема, когда $city имеет значение NULL, это должно показать все новостные сообщения, но ничего не возвращает.

это мой стол: Изображение 174551

  • 0
    $city - это имя столбца?
  • 5
    Вам не нужно даже проверять $city IS NOT NULL , AFAIK. Кстати, вы должны прочитать о том, как использовать подготовленные операторы в PHP.
Показать ещё 15 комментариев
Теги:
where-clause

2 ответа

3
Лучший ответ

Поскольку $city - это переменная PHP, если она равна NULL то когда вы отобразите ее в своем запросе, вы просто ничего не получите. Это сделает неверный запрос; это будет выглядеть так:

select * from T1
where post = "news" and   = cityname and  is not null 

Чтобы это работало, вам нужно заключить $city в ваш запрос в кавычки, а затем вместо сравнения его с NULL сравнить его с пустой строкой, т.е.

select * from T1
where post = "news" and  ('$city' = cityname or '$city' = '')

Обратите внимание, что правильный логический оператор является or для этого варианта использования.

Как было указано в комментариях, вы должны изучить подготовленные заявления. Этот вопрос содержит действительно полезную информацию: как я могу предотвратить внедрение SQL в PHP?

-2

Попробуй это

select * from T1
where post = "news" and  ($city = cityname or $city is not null )
  • 1
    пожалуйста, укажите описание
  • 0
    Можете ли вы объяснить, как это решает проблему? Нет ни одного столбца с именем $city

Ещё вопросы

Сообщество Overcoder
Наверх
Меню