我这样写是错的,应该如何改正?del语句查询的内容是我想要的 不知道应该怎么在laravel中执行这条语句
2条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
在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>"; } }
这里的关键点在于:
- 使用
$request->input()
方法安全地从请求中获取数据。 - 使用
array_map('intval', $ids)
确保所有ID都是整数,避免SQL注入风险。 - 利用
DB::delete()
方法执行原生SQL删除语句,注意SQL语句中的占位符应被实际值替换,而不是字符串拼接。
这样修改后,你的代码应该能正确执行原生SQL删除操作,并在成功后显示提示信息并重定向到指定页面。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用- 使用
悬赏问题
- ¥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局部变量对蓝图不可见