如何在选择查询中使用数组

时间:2014-01-22 20:40:43

标签: php mysql

如何在SQL SELECT查询中使用数组?

$some_array = [];

$sql = "SELECT * FROM `table` WHERE `column` LIKE '%".$some_array."%'";

我可以这种方式使用阵列吗?或者我需要在foreach();

中运行sql

我的目标:获取查询并删除空格并转换为数组并针对该数组中的所有值搜索列

3 个答案:

答案 0 :(得分:1)

您可以使用REGEXP(它只是替代方案):

<?php
$array = array('red','blue','green');

$sql = "SELECT * from `table` where `column` REGEXP '".implode("|",$array)."'";

答案 1 :(得分:0)

试试:

<?php

  $ids = [1,2,3];

  // with quotes
  // $ids_mysql = "'". implode("', '", $ids) ."'";

  // without quotes
  $ids_mysql = implode(", ", $ids);

  $sql = "SELECT * FROM `table` WHERE `column` IN ({$ids_mysql})";

结果是:

SELECT *
FROM `table`
WHERE `column` IN (1,2,3)

如果你想使用LIKE运算符(我不建议使用LIKE或LIKE或LIKE ....):

$values = ['oh', 'my', 'god'];
$all_values = "LIKE '%" . implode("%' OR `column` LIKE '%", $values) . "%'";
$sql = "SELECT * FROM `table` WHERE `column` " . $all_values; 

结果是:

SELECT *
FROM `table`
WHERE `column` LIKE '%oh%'
  OR `column` LIKE '%my%'
  OR `column` LIKE '%god%'

答案 2 :(得分:-2)

这是一个不那么花哨的解决方案,经过测试和运作:

$some_array = array('a', 'b');
$sql = "SELECT * FROM `table` WHERE `column` ";
$i = 0;
foreach ($some_array as $one_value){
     if ($i> 0){$sql.= " OR ";}
     $sql.=   " LIKE '%".$one_value."%' ";
     $i++;
}