首先:
SELECT `key`, `value` FROM settings WHERE `key` = :base_url OR `key` = :google_analytics OR `key` = :site_domain
这是选择多行的正确方法吗?或者,还有更好的方法?因为不是OR全部,而是全部……所以听起来不对。
OR
问题编号2:
这是我的查询,它选择具有分页的用户:
SELECT id, email, verified, level, name_surname, age, sex, profession, education, location, privacy, suspend FROM users LIMIT :start, :results
有时我想传递用户数组以返回此查询,例如array(1,2,3,4,5)。
array(1,2,3,4,5)
显然,简单地添加WHERE $array是行不通的。那我该怎么办呢?
WHERE $array
有时我不想传递这个ID数组,那么当有ID列表和没有ID列表时,如何在状态之间进行切换?如果在prepare语句上,我是否只是创建php?这似乎很明显,但是最好询问最佳实践:)
要从where子句获取多个值,无需使用OR。使用in,例如在以下查询中:
where
in
SELECT `key`, `value` FROM settings WHERE `key` in ( :base_url, :google_analytics, :site_domain);
这与第一个相同:
SELECT * FROM users where id in (1,2,3,4,5);
因此,如果您有一个用户ID数组,则必须implode使用','粘合字符。
implode
','
这是php的完整示例:
<?php $users = array(1,2,3,4,5); $usersStr = implode(',', $users); // returns 1,2,3,4,5 $sql = "SELECT * FROM users where id in ({$userStr})"; ....