Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用具有多个ID的php变量进行选择_Php_Sql - Fatal编程技术网

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

使用具有多个ID的php变量进行选择,php,sql,Php,Sql,我有一个PHP变量,如下所示,例如: $list = "12|421|466|501|1042|" 我想做的是将每个数字与数据库表中的一个字段相匹配 SELECT * FROM tableName WHERE id = any of the numbers in $list 哪种方法最简单 SELECT * FROM table WHERE id LIKE '%$list%' 不太确定|是一个好的分离者。也许你应该试着把它设置成一个数组 下面的人明白了 不太确定|是一个好的分离者。也许你应

我有一个PHP变量,如下所示,例如:

$list = "12|421|466|501|1042|"
我想做的是将每个数字与数据库表中的一个字段相匹配

SELECT * FROM tableName WHERE id = any of the numbers in $list
哪种方法最简单

SELECT * FROM table WHERE id LIKE '%$list%'
不太确定|是一个好的分离者。也许你应该试着把它设置成一个数组

下面的人明白了

不太确定|是一个好的分离者。也许你应该试着把它设置成一个数组

下面的人明白了

使用以下SQL:

SELECT * FROM tableName WHERE id IN (12, 431, 466, 501, 1042)
使用,将列表转换为逗号分隔的列表。

使用以下SQL:

SELECT * FROM tableName WHERE id IN (12, 431, 466, 501, 1042)
使用,可将列表转换为逗号分隔的列表。

在以下情况下使用:

“从id位于(“.str_replace(“|”)、“,”和substr($list,0,-1))”中的tableName中选择*”

用于以下情况:

“从id位于(“.str_replace(“|”)、“,”和substr($list,0,-1))”中的tableName中选择*”

这应该可以:

<?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;
这应该可以:

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

使用replace将|替换为逗号,并删除最后一个|,这样您就可以输入字符串

正确的格式

$list = str_replace('|',',',$list);
$query = "select * from table where ID in ($list)";

使用replace将|替换为逗号,并删除最后一个|,这样就可以输入字符串
正确的格式

$list = str_replace('|',',',$list);
$query = "select * from table where ID in ($list)";

如果您想要组合结果,可以在
语句中使用
,如:

SELECT * FROM tableName WHERE id IN ( $cat = str_replace("|", "," , $list) )
或者,如果需要单独的结果,则必须遍历所有值

$array = preg_split( "\\|" , $list );
foreach ($array as $value) {
    SELECT * FROM tableName WHERE id = $value
}

如果您想要组合结果,可以在
语句中使用
,如:

SELECT * FROM tableName WHERE id IN ( $cat = str_replace("|", "," , $list) )
或者,如果需要单独的结果,则必须遍历所有值

$array = preg_split( "\\|" , $list );
foreach ($array as $value) {
    SELECT * FROM tableName WHERE id = $value
}

从id所在的tableName('.str_replace('|',',',$list)中选择*


它将使用重新拼贴所有|,然后您可以在条件中使用运行查询以获得所需的记录。

从表名中选择*,其中id位于('.str_replace('|',',',',$list)。')


它将使用重新拼合所有| with,然后您可以在条件中运行query with以获得所需的记录。

我认为这将产生一个解析错误,因为$list中的最后一个字符是a |,因此SQL将包含在(x,y,z,)中。注意最后一个逗号。根据我的例子,我认为过滤在这里会有所帮助。是的,后面的逗号会给出一个MySQL错误。编辑以从$list中删除最后一个字符我认为这会产生解析错误,因为$list中的最后一个字符是|,因此SQL将包含在(x,y,z,)中。注意最后一个逗号。根据我的例子,我认为过滤在这里会有所帮助。是的,后面的逗号会给出一个MySQL错误。编辑以从$list中删除最后一个字符