尝试在夫妇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/