MySQL + PHP中where子句中的if条件

时间:2018-11-28 10:51:01

标签: php mysql where-clause

我在PHP中有一个变量。我想在MySQL查询中检查我的PHP变量,如果它不是null,请在where子句中使用它。

    buo.getShortUrl(with: lp) { (url, error) in

        //url = "myrmndtest5.test-app.link/aLyM9DI2cS"     
        let domain = url
        let parameter:AnyObject = "?id=5" as AnyObject
        let testurl:NSURL = NSURL(string: "\(domain)) \(parameter)")!

        print(testurl)
    }

select * from T1 where post = "news" and $city = cityname and $city is not null 是PHP变量。

$city为null时,我遇到了一个问题,该问题应该显示所有新闻帖子,但不返回任何内容。

这是我的桌子: enter image description here

2 个答案:

答案 0 :(得分: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

正如评论中指出的那样,您应该研究准备好的语句。这个问题有一些非常有用的信息:How can I prevent SQL injection in PHP?

答案 1 :(得分:-1)

尝试一下

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