【问题标题】:Raw sql query in laravel not working, shows some errorlaravel 中的原始 sql 查询不起作用,显示一些错误
【发布时间】:2019-09-13 06:08:19
【问题描述】:

当我尝试用原始 sql 查询替换 laravel 查询生成器时,它会显示一些错误。

查询:

$users = DB::select('select * from action_buttons where action_button_id BETWEEN 98 AND 102');

在执行上述查询时,以下错误会以白屏显示。

“哎呀,好像出了点问题。”

我在顶部添加了"use DB;"。搞不懂为什么会出现这个错误。

【问题讨论】:

  • $users = DB::table('action_buttons')->whereBetween('action_button_id', [98, 102])->get();
  • 您是否正确配置 .env 文件并调试配置?检查您的日志文件
  • 我不知道您的数据库架构和错误。但是,我的假设是您希望看到显示的错误,我猜您的环境变量 APP_DEBUG 或 APP_ENV 设置为 false 或生产。在本地开发环境中,您希望 debug 为 true,而 env 为本地。
  • 不要直接使用sql查询。 DB::raw() 用于生成查询构建器不会进一步解析的任意 SQL 命令。因此,他们可以通过 SQL 注入创建攻击向量。 fideloper.com/laravel-raw-queries
  • 正如其他人提到的,这个错误看起来不像查询相关的错误,因此请检查您的配置,这也可能会有所帮助,bobcares.com/blog/laravel-something-went-wrong

标签: laravel rawsql


【解决方案1】:

此问题与查询无关,请检查您的应用程序密钥。使用 artisan 命令php artisan key:generate 生成应用程序密钥并在环境文件中更新APP_KEY

更多信息:"Whoops, looks like something went wrong."https://bobcares.com/blog/laravel-something-went-wrong/

除此之外,我在您的查询中看到了另一个问题,最佳做法是不要直接使用 sql 查询。

DB::raw() 用于生成不被解析的任意 SQL 命令 查询生成器的任何进一步。因此他们可以创建一个向量 用于通过 SQL 注入进行攻击。

欲了解更多信息:https://fideloper.com/laravel-raw-queries

因此更新您的查询,如下所示,

$users = DB::table('action_buttons')->whereBetween('action_button_id', [98, 102])->get();

这些更改将解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-27
    • 2018-04-28
    • 2021-12-05
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 2017-09-13
    • 2020-03-21
    相关资源
    最近更新 更多