【问题标题】:Checking value in an array inside one SQL query with WHERE clause使用 WHERE 子句检查一个 SQL 查询中的数组中的值
【发布时间】:2011-11-25 13:55:38
【问题描述】:

我想知道这在 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 模型。

【问题讨论】:

  • SELECT * FROM posts WHERE user_id IN (1,2,3);

标签: php mysql sql


【解决方案1】:

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

您的查询类似于

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

您可以使用implode() 在 PHP 中的括号之间构建位

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 请注意数组值已针对 SQL 注入进行了清理。
    • 当然......我自己会使用准备好的陈述,但这不是问题;)
    • 净化阵列需要哪些卫生功能?
    • 在这种情况下,只允许使用整数值。因此,您需要检查每个数组元素中的整数值。如果你不从用户输入生成这个数组(或者数组的值不包含任何内容)你可以跳过这个。
    • 你忘记了变量后面的 )
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      SELECT 'value'
       IN (array)
      

      【讨论】:

      • 停止像这样链接到您的网站。
      猜你喜欢
      • 2018-03-22
      • 2012-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      相关资源
      最近更新 更多