我正在尝试从数据库构建选项列表,当选择时,它会查找从单独数据库发出的所有项目。这很好用,直到我不得不用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'
]我得到了想要的结果。