当前位置:Gxlcms > PHP教程 > php查询sql取值再查询问题

php查询sql取值再查询问题

时间:2021-07-01 10:21:17 帮助过:4人阅读

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  大家好 

";for($i=1;$i<=sizeof($array);$i++){	$array[$i-1]='\''.$array[$i-1].'\'';}print_r($array);echo "
";$array=implode(',',$array);$str = "select * from 表B where titile in ($array);";echo $str;?>


运行结果为
Array ( [0] => 你好 [1] => 我好 [2] => 大家好 )
Array ( [0] => '你好' [1] => '我好' [2] => '大家好' )
select * from 表B where titile in ('你好','我好','大家好');

昨晚上说错了,用explode,,希望能帮到您

$arr="你好,我好,大家好";$array=explode(',',$arr);print_r($array);echo "
";for($i=1;$i<=sizeof($array);$i++){ $array[$i-1]='\''.$array[$i-1].'\'';}print_r($array);echo "
";$array=implode(',',$array);echo $array;echo "
";$str = "select * from 表B where titile in ($array);";echo $str;


分隔字符串是explode,合并数组是implode,分隔之后,每一位的两边加上引号,然后在重新合并回来。

运行结果为
Array ( [0] => 你好 [1] => 我好 [2] => 大家好 )
Array ( [0] => '你好' [1] => '我好' [2] => '大家好' )
'你好','我好','大家好'
select * from 表B where titile in ('你好','我好','大家好');

不知道是不是满足你的要求,嘿嘿

人气教程排行