尝试在夫妇ID上使用WHERE IN运行简单的选择查询。

$idArray = array(492, 493, 494, 495);
$csvList = implode(",", $idArray);

DB::select("SELECT id, name FROM table WHERE id IN (?)", array($csvList));


那就是我正在运行的,没有错误。问题是,我的查询将$csvList输出为带引号的字符串。 '492, 493, 494, 495' MySQL无法正确解释。我只能得到492的1个结果,而不是全部4个结果。如果我从查询中删除引号,则可以正常工作。

这是与页面一起运行的完整查询:

SELECT id, name FROM table WHERE id IN ('491,493,494,495');


我需要删除引号,有人知道我该怎么做吗?还是我做错了什么?

最佳答案

您有两个选择。

使用Laravel的查询构建器:

$ids = [492, 493, 494, 495];

$results = DB::table('table')->select('id', 'name')->whereIn('id', $ids)->get();


或创建一个问号数组,然后implode

$ids = [492, 493, 494, 495];

$placeholders = implode(', ', array_fill(0, count($ids), '?'));

$results = DB::select("SELECT id, name FROM table WHERE id IN ({$placeholders})", $ids)->get();

关于php - 通过内插数组来运行Where IN,但是输出是字符串,并且无法按预期在MySQL中运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32704844/

10-11 10:46
查看更多