You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel原生查询中如何正确将数组传入WHERE IN子句?

在Laravel原生查询中正确传入数组到IN子句的方法

你当前的写法存在问题:直接用单个?绑定数组时,Laravel会将数组转换为字符串(比如Array),导致IN子句实际只匹配一个无效值,所以得不到预期结果。以下是两种正确的处理方式:

方法一:原生查询中生成对应数量的占位符

通过生成与数组元素数量一致的?占位符,再将数组作为参数传入,让Laravel自动逐个绑定值:

$groupOfTopics = [46, 51, 167, 176, 177, 181, 185, 270, 323, 328, 350];
// 生成和数组长度匹配的占位符字符串,格式为"?, ?, ?, ..."
$placeholders = implode(',', array_fill(0, count($groupOfTopics), '?'));

$Data = DB::connection('DB')->select(
    "SELECT ... WHERE code IN ($placeholders)",
    $groupOfTopics
);

这种方式完全遵循参数绑定的安全规范,不会存在SQL注入风险。

方法二:使用Laravel查询构建器(更简洁)

如果不需要完全手写原生SQL,推荐用查询构建器的whereIn方法,Laravel会自动处理IN子句的占位符和值绑定:

$groupOfTopics = [46, 51, 167, 176, 177, 181, 185, 270, 323, 328, 350];

$Data = DB::connection('DB')
    ->table('your_table_name') // 替换为实际表名
    ->select('column1', 'column2') // 替换为需要查询的字段
    ->whereIn('code', $groupOfTopics)
    ->get();

这种写法更简洁,也更符合Laravel的开发习惯,同时避免了手动处理占位符的繁琐。

内容的提问来源于stack exchange,提问作者yellow_melro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 22:01:12