2012-01-20 110 views
0

我已经和PHP和MySQL进行了一次小型聊天。但现在我遇到了一个问题:我想进行查询,以便如果邮件设置为私有,则只有在发送给此用户时才加载它们。如果他们不是私人的,只需加载它们。MySQL SELECT WHERE ..... IF

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

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

在此先感谢您。

+0

'WHERE'子句已经是'IF'。 –

+0

@MarcB在问题的背景下,这是正确的。总的来说,这是不对的。这对初学者来说是一个危险的评论... – Romain

回答

1

有实现这一目标的几种方法,除其中:

AND (private <> '1' OR ToPerson = '$user_id') 

这几乎意味着“要么它不是一个私人信息,或者它给特定用户”;或

AND IF(private = '1', ToPerson = '$user_id', TRUE) 

这是很明显的。

最后评论:为了上帝的爱,请使用预准备的语句,并且不要将外部输入内联到您的SQL中,否则SQL注入将迟早会触发您的屁股。

+0

好!谢谢你,罗曼。这是我在StackOverflow上的第一个问题。 –