如何在SQL SELECT查询中使用数组?
$some_array = [];
$sql = "SELECT * FROM `table` WHERE `column` LIKE '%".$some_array."%'";
我可以这种方式使用阵列吗?或者我需要在foreach();
中运行sql我的目标:获取查询并删除空格并转换为数组并针对该数组中的所有值搜索列
答案 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++;
}