2301_76826086 2024-06-09 16:54 采纳率: 70%
浏览 8
已结题

laravel怎么执行原生sql语句

img

我这样写是错的,应该如何改正?del语句查询的内容是我想要的 不知道应该怎么在laravel中执行这条语句

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-09 16:54
    关注

    引自免费微信小程序:皆我百晓生

    在Laravel中执行原生SQL语句,可以利用Laravel的DB门面。你尝试执行的删除操作可以通过以下方式正确实现:

    首先,确保从请求中获取的$ids是一个包含多个ID的数组。然后,使用implode()函数将这个数组转换为一个字符串,其中ID由逗号分隔。接下来,利用Laravel的DB门面执行原生SQL删除语句。

    下面是修改后的代码示例:

    public function plscgoods(Request $request) {
        // 获取请求中的ID数组
        $ids = $request->input('id', []);
    
        // 检查ID数组是否非空
        if (!empty($ids)) {
            // 将ID数组转换为逗号分隔的字符串
            $idsString = implode(',', array_map('intval', $ids));
    
            // 使用Laravel的DB门面执行原生SQL删除语句
            $deleted = DB::delete("DELETE FROM tb_goods_copy1 WHERE goodsid IN ({$idsString})");
    
            // 输出成功信息并重定向
            echo "<script>alert('删除成功!'); location.href='/fenye'</script>";
        } else {
            // 如果没有ID,则提示错误
            echo "<script>alert('请选择要删除的项!'); history.back()</script>";
        }
    }
    

    这里的关键点在于:

    1. 使用$request->input()方法安全地从请求中获取数据。
    2. 使用array_map('intval', $ids)确保所有ID都是整数,避免SQL注入风险。
    3. 利用DB::delete()方法执行原生SQL删除语句,注意SQL语句中的占位符应被实际值替换,而不是字符串拼接。

    这样修改后,你的代码应该能正确执行原生SQL删除操作,并在成功后显示提示信息并重定向到指定页面。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月17日
  • 已采纳回答 6月9日
  • 创建了问题 6月9日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见