php - Laravel - LIKE 运算符来搜索加密值

标签 php sql laravel encryption sql-like

我正在尝试在我的 Laravel 应用程序中实现一个可以按名称过滤用户的搜索模块。为了保护用户,'name' 列行在数据库上进行了加密。我面临的问题是下面的查询总是返回 0 结果。

我在搜索数据库之前对搜索输入值进行加密。

$patients = DB::select( DB::raw("SELECT * FROM patient WHERE name LIKE '%".Crypt::encrypt($searchText)."%';"));

我在这里做错了什么?

最佳答案

Crypt::encrypt("Text") 

上面每次调用时很少会生成相同的值,因此您的数据库中不会存储相同的值。

建议

除非确实必要,否则不要加密用户名。如果您确实必须加密名称,请尝试以下操作。

$patients = DB::select("SELECT * FROM patient WHERE name = '".Crypt::encrypt($searchText)."'");

您的加密值将区分大小写,因此请将列排序规则更改为 latin1_general_cs

关于php - Laravel - LIKE 运算符来搜索加密值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30575601/

相关文章:

php - 是否可以在不重新加载页面的情况下检查用户是否在 php 中启用了 cookie?

php - 如何从 codeigniter 中的 URL 获取 id?

php - Laravel/PHP - 高级多态关系

php - AppCache list 错误

php - MySQL在将数据插入不同表时建立关系

c# - 为什么此存储过程不更新数据库中的数据?

mysql - 查找一个月有多少分钟 : MySQL

sql - 使用一个 SQL 查询更新所有行

Laravel Collection - 将特定项目放在最后位置

php - Laravel - 在非对象上调用成员函数 paginate()