首页 >后端开发 >php教程 >php查询sql取值再查询问题

php查询sql取值再查询问题

WBOY
WBOY原创
2016-06-20 12:33:20977浏览

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;?>


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

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

$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;


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

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

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn