Home > Article > Backend Development > php查询sql取值再查询问题
B表
id title
1 你好
2 我好
3 大家好
$arr =你好,我好,大家好;中间是逗号隔开
然后我想通过$arr的值 查询B表 对应的title的id
怎么写查询?
效果大概是这样:
$arr =你好,我好,大家好;
SELECT * FROM B表 WHERE title=$arr
输出结果为:
你好我的id为1
我好我的id为2
大家好我的id为3
将$arr =你好,我好,大家好;用 $array=implode(',',$arr);函数按逗号分隔开,然后放进一个数组中比如$array.
然后SELECT * FROM B表 WHERE title in ($array);
然后用foreach遍历,按格式取出结果就可以了
缺少引号怎么弄呢?SELECT * FROM B表 WHERE title in ($array); 应该是in ('你好','我好','大家好'),现在是(你好,我好,大家好)
create temporary table T select 1 as id, '你好' as title union select 2, '我好' union select 3, '大家好';select * from T where find_in_set(title, '我好,你好,大家好')
id title 1 你好 2 我好 3 大家好还可以排序
select * from T where find_in_set(title, '我好,你好,大家好') order by find_in_set(title, '我好,你好,大家好');
id title 2 我好 1 你好 3 大家好
<?php $arr="你好,我好,大家好";$array=explode(',',$arr);print_r($array);echo "<br>";for($i=1;$i<=sizeof($array);$i++){ $array[$i-1]='\''.$array[$i-1].'\'';}print_r($array);echo "<br>";$array=implode(',',$array);$str = "select * from 表B where titile in ($array);";echo $str;?>
$arr="你好,我好,大家好";$array=explode(',',$arr);print_r($array);echo "<br>";for($i=1;$i<=sizeof($array);$i++){ $array[$i-1]='\''.$array[$i-1].'\'';}print_r($array);echo "<br>";$array=implode(',',$array);echo $array;echo "<br>";$str = "select * from 表B where titile in ($array);";echo $str;