如果 NOT IN 中的值为空 mysql 则抛出错误
If the value inside NOT IN is empty mysql is throwing an error
如果 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'
如果 WHERE m.message_type_id IN (61) 它给了我正确的响应。
解决方法是什么?
IN
子句要求您至少发送一个值,为什么您希望即使参数为空也能正常工作?
expr NOT IN (value,...)
在更广泛的层面上,几乎所有比较都是这种情况,如果有无效值要与之比较,你为什么期望比较不会导致错误
这对你有用吗?
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'";
}
如果 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'
如果 WHERE m.message_type_id IN (61) 它给了我正确的响应。
解决方法是什么?
IN
子句要求您至少发送一个值,为什么您希望即使参数为空也能正常工作?
expr NOT IN (value,...)
在更广泛的层面上,几乎所有比较都是这种情况,如果有无效值要与之比较,你为什么期望比较不会导致错误
这对你有用吗?
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'";
}