У меня есть переменная в PHP. Я хочу проверить мою переменную PHP в запросе MySQL и, если она не равна нулю, использовать ее в предложении where.
select * from T1
where post = "news" and $city = cityname and $city is not null
$city
- это переменная PHP.
У меня проблема, когда $city
имеет значение NULL, это должно показать все новостные сообщения, но ничего не возвращает.
это мой стол:
Поскольку $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?
Попробуй это
select * from T1
where post = "news" and ($city = cityname or $city is not null )
$city
$city
- это имя столбца?$city IS NOT NULL
, AFAIK. Кстати, вы должны прочитать о том, как использовать подготовленные операторы в PHP.