使用WHERE子句检查一个SQL查询内的数组中的值

时间:2011-11-25 13:55:39

标签: php mysql sql

我想知道这在sql中几乎是可能的(使用php作为服务器端),其中你有一个值数组(数字),你尝试根据该数组中的值检索数据。

我有一个sql表:

posts(
    id int(11) primary key,
    posts varchar(140),
    user_id int(11) foreign key
);

我现在写一个查询来检索'帖子':

$query="SELECT * FROM posts WHERE user_id=(**Array of select user_id's**)";

是否有任何sql内置函数来检查数组中的值?或者我应该使用PHP吗?

我实际上正在尝试实施Twitter模型,以显示我们关注的人的帖子。

4 个答案:

答案 0 :(得分:13)

SQL无法解析PHP数组。试试这个:

$query="SELECT * FROM posts WHERE user_id IN ({implode(',', $userIDarray)})";

答案 1 :(得分:12)

是的,这很容易实现。您需要查看MySQL's IN function

您的查询将类似

SELECT * FROM posts WHERE user_id IN (1,2,3,4,5,6)

您可以使用implode()

在PHP中的括号之间构建位

答案 2 :(得分:2)

查看此页面:WHERE ... IN。您可以使用IN运算符检查值列表中是否存在某个值。

答案 3 :(得分:1)

是的,你必须使用以下语法

SELECT 'value'
 IN (array)