搜索加密数据

时间:2018-05-18 19:12:58

标签: php mysql arrays

我有一些数据库有一堆正常的'其中的数据以及加密的名字和姓氏。

我有一个获取该数据的PHP页面,并在MySQL语句中按姓氏排序。

然后使用while循环在页面上打印信息,此页面还有一个简单的名/姓搜索。

我有两个问题,我不确定如何解决:

  1. 如何按姓氏订购数据,MySQL语句按订单排序,但由于姓氏已加密,一旦解密,订单就会错误。

  2. 如何让我的搜索工作?目前,如果post变量被设置,它会添加到MySQL查询中,但这又会查询加密数据,因此无法正常工作。

  3. 我猜测我需要获取数据,并在解密名称时将其传递给新数组,然后对该数组进行排序。然后我也可以将我的搜索应用于该数组。

    如果上述内容是正确的,我不知道该怎么做,我之前已经说过,但我无法弄清楚如何解密我的数据,同时将其传递给新数组。我的解密函数接受两个参数,数据和加密密钥,我无法使array_walker工作......

    我想如果我解决了第一个问题,我就可以弄清楚如何搜索。

    请帮助!!

1 个答案:

答案 0 :(得分:0)

所以我找到了一个解决方案,我不知道这是不是最好的方法,但因为我只需要搜索我做过以下的名字:

我需要保留现有的foreach循环遍历我的代码并打印到页面上,所以我在构建新数组的sql语句之后创建了一个while循环,同时也解密了我的数据:

        $array_new = array();

        while ($row = $result->fetch_assoc()) {
            $FirstName = custom_decrypt($row["FirstName"], Key);
            $LastName = custom_decrypt($row["LastName"], Key);

            $array_new[] = array("Id"=>$row["Id"], "FirstName"=>$FirstName, "LastName"=>$LastName);
        }

然后要搜索,我在$ array_new []行之前插入一个if语句,检查我的搜索表单是否已发布,然后设置变量/标志(如果有)并且搜索和之间存在匹配名称变量。然后我在$ array_new []行周围包装了一个if语句,这样只有匹配时它才会将数据添加到数组中。

如果没有post变量,我也设置了变量/ flag,所以如果搜索没有发生,它会返回所有项目。

最后,我使用:

在while循环之后对数组进行了排序
        usort($array_new, function($a, $b){ return strcmp($a["LastName"], $b["LastName"]); });