MySQL选择位置。。。。。如果

MySQL选择位置。。。。。如果,mysql,database,if-statement,Mysql,Database,If Statement,我用PHP和MySQL做了一个小聊天。但是现在我遇到了一个问题:我想做一个查询,如果消息被设置为private,那么只有当消息被发送给这个用户时,我才会加载它们。如果它们不是私有的,只需将它们全部加载即可 我知道我需要一个“如果”。但我怎么能做到呢?我的代码如下所示: SELECT message, private, FromPerson, ToPerson FROM chat WHERE time > '$time' and FromPerson != '$user_id' AND

我用PHP和MySQL做了一个小聊天。但是现在我遇到了一个问题:我想做一个查询,如果消息被设置为private,那么只有当消息被发送给这个用户时,我才会加载它们。如果它们不是私有的,只需将它们全部加载即可

我知道我需要一个“如果”。但我怎么能做到呢?我的代码如下所示:

SELECT message, private, FromPerson, ToPerson 
FROM chat WHERE time > '$time' 
and FromPerson != '$user_id' 
AND IF (private = '1') ToPerson = '$user_id'

提前感谢。

有几种方法可以实现这一点,其中包括:

AND (private <> '1' OR ToPerson = '$user_id')
这是不言自明的


最后一点意见:看在上帝的份上,请使用预先准备好的语句,不要将外部输入内联到SQL中,否则SQL注入迟早会踢到你的屁股。

A
WHERE
子句已经是一个“IF”。@MarcB在问题的上下文中,这是正确的。一般来说,这是不对的。对初学者来说,这是一个危险的评论……好!谢谢你,罗曼。这是我关于StackOverflow的第一个问题。
AND IF(private = '1', ToPerson = '$user_id', TRUE)