首頁 > 後端開發 > php教程 > php查询sql取值再查询问题

php查询sql取值再查询问题

WBOY
發布: 2016-06-20 12:33:20
原創
961 人瀏覽過

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 ('你好','我好','大家好');

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板