【问题标题】:How can I SELECT data which one field are member of an array?如何选择一个字段是数组成员的数据?
【发布时间】:2012-12-17 21:33:29
【问题描述】:

使用 PHP 和 MySQL。我有一个数组 P,其中包含可能的产品类别数的值。在我的表格中,它还有“类别”字段,其中存储了类别编号和其他字段。我想要的是在所有行中选择字段“类别”在数组 P 中有任何值的数据。我该怎么办?

例如
P=[1,7,13]

SELECT * FROM table WHERE category=P[1] OR categry=P[2] OR category=P[3]....

【问题讨论】:

  • P 是列名吗?如果是这样,您是否意识到数组不是MySQL 中的数据类型。您实际上在该列中存储了什么?一个号码?一个字符串?
  • @MicaelRushton P 不是列名。我将数字存储在“类别”字段中。

标签: php mysql arrays select field


【解决方案1】:

用途:

$categories = implode(', ', $p); // Where $p is the array 
SELECT * FROM table WHERE category IN ($categories)

【讨论】:

    【解决方案2】:

    试试implode() function

    $sql = "SELECT * FROM table WHERE category IN (".implode(",", $P).")"
    

    【讨论】:

    • 感谢 X.L.Ant ,您的回答非常紧凑,适合在我的代码中使用。
    【解决方案3】:

    你应该使用IN关键字:

    SELECT * FROM table WHERE category IN (p[1], p[2], p[3])
    

    implode:

    $categories = implode(',', $P);
    

    【讨论】:

      【解决方案4】:

      使用字符串连接:

      $P = array(1, 7, 13);
      $query = "SELECT * FROM table WHERE category=".$P[1]." OR 
                  category=".$P[2]." OR category=".P[3]."....";
      

      $query = "SELECT * FROM table WHERE category={$P[1]} OR 
                  category={$P[2]} OR category={P[3]}....";
      

      【讨论】:

        【解决方案5】:

        由于 P 数组中可能有多于/少于 3 个值,因此最好先进行查询:

        $p = array('1', '2', '3', '4', '5');
        
        $auto = '';
        foreach($p as $value){
            $auto .= "'".$value."'" . " OR category= ";
        }
        $auto = substr($auto, 0 , strlen($auto) - 14);
        
        $the_query = "SELECT * FROM table WHERE category= $auto";
        
        echo $the_query;
        // mysql_query($the_query);
        

        上面代码中 P 有 3 个值的结果将是:

        SELECT * FROM table WHERE category= '1' OR category= '2' OR category= '3' OR category= '4' OR category= '5'
        

        这将自动根据P 数组中的值数量进行查询。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-05-19
          • 1970-01-01
          • 2013-05-17
          • 1970-01-01
          • 1970-01-01
          • 2016-12-19
          • 1970-01-01
          • 2018-11-02
          相关资源
          最近更新 更多