我想从我的MySQL表中获取页面列表。但是,如果$ user_id值为NULL,并且如果定义了$ user_id值,我想获取所有用户添加的页面列表,我需要获取该特定用户添加的页面列表。我觉得可能有一个简单的解决方案,但是很长时间以来我一直试图找到一种解决方案,但是我失败了,例如“ WHERE user_id不为null或user_id = $ user_id”。我需要如何修改以下代码以获得预期结果?
public function getPagesList($user_id = NULL){
$this->db->query ('
SELECT `page_id`, `page_name`
FROM `pages`
WHERE `user_id` = :user_id
');
$this->db->bind(':user_id', $user_id);
return $this->db->resultSet();
}
如果$ user_id值为NULL,并且如果定义了$ user_id值,我想获取所有用户添加的页面列表,我需要获取该特定用户添加的页面列表。
这将转换为:
WHERE :user_id is NULL OR user_id = :user_id
当参数为时null
,将返回所有行;否则为false。设置参数后,将用于过滤column user_id
。
您可以使用来稍微缩短表达式coalesce()
,但效率可能较低:
WHERE COALESCE(:user_id, user_id) = user_id
请注意,正如Liam Sorsby所评论的那样,最有效的选项可能是检查是否从应用程序中设置了参数,并相应地修改了查询字符串。如果未设置参数,则查询中没有WHERE
子句;如果已设置,则WHERE user_id = :user_id
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句