【问题标题】:Laravel: Insert Hash into queryLaravel:将哈希插入查询
【发布时间】:2020-06-21 00:06:20
【问题描述】:

在Codeigniter中,我曾经使用过

$this->db->where('sha1(id)', $id);

如何在 Laravel 中实现这一点?

\DB::table('')->where('sha1(id)', $id); ?
\DB::table('')->whereRaw("sha1(id) = '$id'"); ?

如果我要使用 Laravel Hash 门面,我该如何实现呢?

\DB::table('')->where('\Hash::make(id)', $id);

我的主要目标是搜索 hash(id -> from table) = $id -> (method param) 的表

【问题讨论】:

  • 您能展示一下您是如何插入该 ID 的吗?你用什么方法来存储id
  • 你说的id是哪一个?它是来自表格,还是来自参数的 id?如果从表中,我以正常方式插入它,我使用自动增量从 dm 机器代替。但是 $id 参数,我在我的控制器上使用了两个函数,首先我对其进行哈希处理,然后将其返回给 ajax 响应,然后从 javascript 重定向到路由详细信息/hashed_id

标签: sql sql-server laravel encryption hash


【解决方案1】:

你已经接近了!

试试:

\DB::table('')->where(\DB::raw('sha1(id)'), $id);

【讨论】:

  • 我收到此错误:**SQLSTATE[42000]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]'sha1' 不是可识别的内置函数名称。 (SQL: select top 1 * from [ediscount_header] where sha1(id) = **
  • 是的,所以 sha1 不是数据库函数。您是否尝试使用内置的 PHP 来散列值?
  • 是的,伙计……我知道那不是数据库函数,但我不知道,它只是在 codeigniter man 中工作……就像我的代码在那里
【解决方案2】:

sha1() 是一个生成sha1 字符串的 MySQL 函数

如果你想从 MySQL 使用,那么使用

\DB::table('')->where(\DB::raw('sha1(id)'), $id);

但我建议像这样使用 Laravel 外观

\DB::table('')->where('id', \Hash::make($id));

【讨论】:

  • laravel 门面与人相反,因为我的 id 我们只是一个普通整数,所以我想对其进行哈希处理并将其与我的参数 id 进行比较,该参数 id 已经被哈希处理
  • 您使用的是哪个 MySQL 版本?可能 sha1 功能已经在 MySQL 8.0.0 版本中出现。请检查身份证。
  • 看看如何使用函数dev.mysql.com/doc/refman/8.0/en/…
  • 对不起,我没有说清楚,对于数据库,我使用的是 SQR 服务器。但是 sha1 函数只能使用 codeigniter。
  • 我从不使用 SQR。如果 SQR 没有加密功能,我推荐使用 Laravel Hash 来存储、检索搜索。
猜你喜欢
  • 2011-11-22
  • 1970-01-01
  • 1970-01-01
  • 2015-06-25
  • 2017-03-28
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
相关资源
最近更新 更多