【问题标题】:PHP/mySQL - Select WHERE multiple values in an associative arrayPHP/mySQL - 在关联数组中选择 WHERE 多个值
【发布时间】:2011-06-25 12:29:34
【问题描述】:
$skuArray = array(00240=>123,00241=>456);
$getSkus = mysql_query("SELECT sku FROM data WHERE sku IN($skuArray)");

我上面的代码不起作用,我怎样才能让它从数据 WHERE sku = $skuArray 中的任何键名中选择所有 sku? (本例中为 00240 和 00241)

希望这是有道理的,谢谢。

【问题讨论】:

    标签: php mysql arrays associative-array


    【解决方案1】:

    试试这个:

    <?php
    $skuArray = array('00240'=>123, '00241'=>456);
    
    $inSkus = array();
    
    foreach (array_keys($skuArray) as $key)
    {
        $inSkus[] = '"' . $key . '"';
    }
    
    $sql = 'SELECT sku FROM data WHERE sku IN (' . implode(', ', $inSkus) . ')';
    
    echo $sql;
    

    您需要将键作为字符串,然后需要将它们包装在括号中以进行 SQL 查询。

    【讨论】:

      【解决方案2】:
      $skuArray = array('00240'=>123,'00241'=>456);
      $keys = array_keys($skuArray);
      $getSkus = mysql_query("SELECT sku FROM data WHERE sku IN('" . join("','", $keys) . "')");
      

      【讨论】:

      • 什么不起作用?数组键是否用引号括起来,否则 PHP 会将它们读取为八进制。 $skuArray 是否为空?在这种情况下,您将在第 2 行收到错误消息。您可能应该检查 $skuArray 是否也不是空的。
      【解决方案3】:
       foreach($skuArray  as $value=>$key){
          if($where=="")
             $where= $value" = '".$key."'";
          else
             $where.= $value" = '".$key."'";
       }
       $getSkus = mysql_query("SELECT sku FROM data " .($where)?" WHERE   $where )":"");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-30
        • 1970-01-01
        • 1970-01-01
        • 2016-06-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多