Php 基于逗号分隔值条件的SQL查询?

Php 基于逗号分隔值条件的SQL查询?,php,mysql,Php,Mysql,可能重复: 假设我有一组像(3,2,5)这样的数字,通常我用来分割它们,搜索mysql获取值的方法是在PHP中使用explode来分割它们 范例 $string = '3,4,5'; $array = explode(',',$string); foreach($array as $value){ $query = 'SELECT ID FROM TABLE WHERE ID = "'.$value.'"'; } 它是这样工作的,但它使脚本非常慢 我现在需要在没有PHP循环的情况下,

可能重复:

假设我有一组像(3,2,5)这样的数字,通常我用来分割它们,搜索mysql获取值的方法是在PHP中使用explode来分割它们

范例

$string = '3,4,5';
$array = explode(',',$string);
foreach($array as $value){
    $query = 'SELECT ID FROM TABLE WHERE ID = "'.$value.'"';
}
它是这样工作的,但它使脚本非常慢

我现在需要在没有PHP循环的情况下,将这个字符串拆分成查询本身并返回结果

$string = '3,4,5';
$query = "SELECT ID FROM TABLE WHERE ID IN ($string)";
在中使用

$string = '3,4,5';
$query = "SELECT ID FROM TABLE WHERE ID IN ($string)";

为什么不是一个
在哪里。。。在…

select ID from TABLE where ID in (3,4,5)

为什么不是一个
在哪里。。。在…

select ID from TABLE where ID in (3,4,5)

如果$string变量为:

$string = '3,4,5';
尝试按以下方式生成查询:

$query = 'SELECT ID FROM TABLE WHERE ID in (".$string.")';

不需要为此循环。

如果$string变量为:

$string = '3,4,5';
尝试按以下方式生成查询:

$query = 'SELECT ID FROM TABLE WHERE ID in (".$string.")';

这不需要循环。

您可以在
操作符中使用

此外,请确保应用正确的转义(在这种情况下,这不重要,但在通过web请求提交字段时会发生):

另一种奇特的方法是使用预先准备好的语句:

$placeholders = join(',', array_fill(0, count($array), '?'));
$query = "SELECT ID FROM TABLE WHERE ID IN ($placeholders)";
然后,要执行查询,您需要像这样绑定数字(PDO示例):


您可以在
操作符中使用

此外,请确保应用正确的转义(在这种情况下,这不重要,但在通过web请求提交字段时会发生):

另一种奇特的方法是使用预先准备好的语句:

$placeholders = join(',', array_fill(0, count($array), '?'));
$query = "SELECT ID FROM TABLE WHERE ID IN ($placeholders)";
然后,要执行查询,您需要像这样绑定数字(PDO示例):


你是在循环内执行该查询吗?兄弟,你应该首先阅读基础知识。请告诉我,当你已经有一个id数组时,你实际上并不是在表中选择id…你是在循环内执行该查询吗?兄弟,你应该首先阅读基础知识。请告诉我,当你已经有了一个id数组时,你实际上并不仅仅是从表中选择id…因为我还不知道它(我还是mysql新手:)这是一个标准的sql功能。不管怎样都不用担心。每个人都必须从某个地方开始。因为我不知道我还是mysql的新手:)这是一个标准的sql特性。不管怎样都不用担心。每个人都必须从某个地方开始。