2012-01-20 5 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. –