选择使用具有多个ID的php变量

时间:2011-07-05 10:34:54

标签: php sql

我有一个PHP变量,例如:

$list = "12|421|466|501|1042|"

我想做的是将每个数字与数据库表中的字段匹配。

SELECT * FROM tableName WHERE id = any of the numbers in $list

这是最简单的方法吗?

7 个答案:

答案 0 :(得分:7)

使用此SQL:

SELECT * FROM tableName WHERE id IN (12, 431, 466, 501, 1042)

使用explode()implode()将您的列表转换为以逗号分隔的列表。

答案 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条件运行查询以获取所需的记录..