DB类的使用,sql问题

$connection=DB::connection(‘mysql’)->table(表名称)
问:下面原本的数据怎么防止注入,sql可以执行成功
原本的(可以执行成功,没什么问题,根据可能会出现sql注入)
主要解决where in 绑定的参数过多执行不了的问题

if (count($values)>300) {
    $values=collect($values)->map(function($value){
        return "'".$value."'";
    })->toArray();
    $connection=$connection->whereRaw($column.' in ('.implode(',',$values).')');
}else {
    $connection=$connection->whereIn($column,$values);
}
return $connection;

优化失败,报sql错误
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘?’ at line 1
但是报的错误sql语句,在sql那边执行是没问题的

if (count($values)>300) {
    $values=collect($values)->map(function($value){
        return "'".$value."'";
    })->toArray();
    $values='('.implode(',',$values).')';
    $connection=$connection->whereRaw($column.' in ?',[$values]);
}else {
    $connection=$connection->whereIn($column,$values);
}
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 8

没看懂这个if有什么含义,直接whereIn不行吗

1年前 评论
ytoz (楼主) 1年前
luyang (作者) 1年前
ytoz (楼主) 1年前
ytoz (楼主) 1年前
luyang (作者) 1年前

不是个数, 是长度限制, max-allowed-packet 默认4M

1年前 评论

whereIn可以改成join查询

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!