我正在尝试在我的 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/