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 ('你好','我好','大家好');
不知道是不是滿足你的要求,嘿嘿