在使用AES_DECRYPT时构建PHP选项列表


build PHP option list whilst using AES_DECRYPT.

我正在尝试从数据库构建选项列表,当选择时,它会查找从单独数据库发出的所有项目。这很好用,直到我不得不用AES_DECRYPT()解密。该值已存储,因此查找仍然有效,但没有可见的名称。

<form>
            Select a name and will list all items currently issued to that person. Press return to return an item.      
        <select id="list" name="users" onchange="showUser(this.value)">
    <?php
    $servername = "";
    $username = "";
    $password = "";
    $dbname = "";
    $aeskey = 'key';
        $pdo = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
        #Set Error Mode to ERRMODE_EXCEPTION.
        $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  
    $stmt = $pdo->prepare('SELECT id, AES_DECRYPT(Fname,"'.$aeskey.'"),AES_DECRYPT(Sname,"'.$aeskey.'") FROM  `name` ORDER BY  `Sname` DESC ');
    $stmt->execute();
       while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo '<option id ="'.$row['id'].'"value="'.$row['id'].'">'.$row['Fname']." ".$row['Sname'].'</option>';
       }
     ?>
 </select> 
            <div id="textt"><b>items listed here.</b></div>
            <br />
        </form>

如果我将$stmt = $pdo->prepare更改为 ('SELECT id, Fname, Sname FROM 'name' ORDER BY 'Sname' DESC ');它工作正常,但是所有名称都已加密。我尝试将AES_DECRTYPT移动到while语句内部,但没有运气。我还检查了phpMyAdmin中的选择语句,它工作正常。提前感谢您的帮助

我通过在此处搜索大量线程并组合答案找到了答案。

 <form>
    Select a name and will list all items currently issued to that person. Press return to return an item.      
    <select id="list" name="users" onchange="showUser(this.value)">
    <?php
    $servername = "";
    $username = "";
    $password = "";
    $dbname = "";
    $aeskey = 'key';
        $pdo = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
        #Set Error Mode to ERRMODE_EXCEPTION.
        $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  
    $stmt = $pdo->prepare('SELECT id, CAST(AES_DECRYPT(Fname,"'.$aeskey.'")
    AS CHAR(50)) fname_decrypt,CAST(AES_DECRYPT(Sname,"'.$aeskey.'")AS CHAR (50)) sname_decrypt FROM  `name` ORDER BY  `Sname` DESC ');
    $stmt->execute();
       while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo '<option id ="'.$row['id'].'"value="'.$row['id'].'">'.
    $row['Fname_decrypt']." ".$row['Sname_decrypt'].'</option>';
       }
     ?>
 </select> 
            <div id="text"><b>items listed here.</b></div>
            <br />
        </form>

通过使用CAST(AES_DECRYPT(fname,"'.$aeskey.'")AS CHAR(50)) fname_decrypt然后查找$row['fname_decrypt' ]我得到了想要的结果。