Если m.message_type_id IN () пусто, это дает мне ошибку, которая говорит
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ) UNION ( ' at line 16
SELECT m.id,m.log,message,images,videos,uo.user_id as to_id,owner_id,
IF(m.owner_id = 45,'sent','received') as type
FROM messages as m
LEFT JOIN events as e ON m.message_type_id = e.id
LEFT JOIN user_organization as uo ON uo.id = e.org_id
WHERE m.message_type_id IN ()
AND m.type = 'event_invite_request_msg'
и если ГДЕ m.message_type_id IN (61), это дает мне правильный ответ.
Каково решение?
IN
Предложение ожидает, что вы отправите хотя бы одно значение, почему вы ожидаете, что оно будет работать даже с пустым параметром?
expr NOT IN (значение, …)
На более широком уровне это имеет место почти со всеми сравнениями, почему вы ожидаете, что сравнение не приведет к ошибке, если есть недопустимое значение для сравнения с
Будет ли это работать для вас?
SELECT myField FROM myTable WHERE MyField2 =
Нет, это не будет
Вы должны будете использовать условие для этого
if(count($friendsArray[])){
$qry = "SELECT m.id,m.log,message,images,videos,uo.user_id as to_id,owner_id,
IF(m.owner_id = 45,'sent','received') as type
FROM messages as m
LEFT JOIN events as e ON m.message_type_id = e.id
LEFT JOIN user_organization as uo ON uo.id = e.org_id
WHERE m.message_type_id IN ($ids)
AND m.type = 'event_invite_request_msg'";
}else{
$qry = "SELECT m.id,m.log,message,images,videos,uo.user_id as to_id,owner_id,
IF(m.owner_id = 45,'sent','received') as type
FROM messages as m
LEFT JOIN events as e ON m.message_type_id = e.id
LEFT JOIN user_organization as uo ON uo.id = e.org_id
WHERE m.type = 'event_invite_request_msg'";
}