我有一个PHP变量,例如:
$list = "12|421|466|501|1042|"
我想做的是将每个数字与数据库表中的字段匹配。
SELECT * FROM tableName WHERE id = any of the numbers in $list
这是最简单的方法吗?
答案 0 :(得分:7)
使用此SQL:
SELECT * FROM tableName WHERE id IN (12, 431, 466, 501, 1042)
答案 1 :(得分:2)
像这样使用IN:
"SELECT * FROM tableName WHERE id IN (".str_replace('|', ',', substr($list, 0, -1)).")"
答案 2 :(得分:0)
SELECT * FROM table WHERE id LIKE '%$list%'
不太确定是一个很好的分离器。也许你应该尝试将它设置成一个数组。
下面的人得到了它!答案 3 :(得分:0)
这应该有效:
<?php
$list = "12|421|466|501|1042|";
$items = array_filter(
array_map( 'trim', explode( "|", $list ) ),
function( $item ) {
return $item != ''; // filter empty values.
}
);
$query = 'SELECT foo FROM bar WHERE id IN ( ' . implode( ', ', $items ) . ' );';
echo $query;
答案 4 :(得分:0)
使用replace替换|进入逗号并删除最后一个|这样你就可以得到字符串了
格式正确
$list = str_replace('|',',',$list);
$query = "select * from table where ID in ($list)";
答案 5 :(得分:0)
如果您想要合并后的结果,可以使用IN
语句,如:
SELECT * FROM tableName WHERE id IN ( $cat = str_replace("|", "," , $list) )
或者,如果您想要单独的结果,则必须遍历所有值。
$array = preg_split( "\\|" , $list );
foreach ($array as $value) {
SELECT * FROM tableName WHERE id = $value
}
答案 6 :(得分:0)
SELECT * FROM tableName WHERE id IN('.str_replace('|',',',$ list)。');
它将取代所有|使用,然后您可以使用IN条件运行查询以获取所需的记录..