随着新的GDPR规则在欧盟落实,我希望将一个非常简单的事件预订系统从普通文件数据库更新为加密数据库。
我的数据库已经为管理员提供加密登录,但我打算将AES_ENCRYPT
用于我们预订的人员。
目前,我们将firstname
,surname
,email
和telephone
存储在名为event_candidate
的表格中,我知道如何调用和更新单行,但我需要一些关于如何批量更新数据库中所有行的建议。
继承我的综合版本。我知道这是不正确的,但是非常感谢任何有关如何将此运行作为单个批量更新脚本的建议或指导。
$key = "insert_key_here";
$Get_Details = $dbconn->prepare('SELECT id, firstname, surname, telephone, email FROM event_candidate');
$Get_Details->execute();
if($Get_Details->rowCount() > 0) {
foreach ($Get_Details->fetchAll() as $Get_Details_Row) {
// Run the update
$Update_Details = $dbconn->prepare('UPDATE event_candidate SET
firstname = AES_ENCRYPT(:firstname,'.$key.'),
surname = AES_ENCRYPT(:surname,'.$key.'),
telephone = AES_ENCRYPT(:telephone,'.$key.'),
email = AES_ENCRYPT(:email,'.$key.')
WHERE id = :id');
$Update_Details->bindParam(':id', $Get_Details_Row['id'], PDO::PARAM_STR);
$Update_Details->bindParam(':firstname', $Get_Details_Row['firstname'], PDO::PARAM_STR);
$Update_Details->bindParam(':surname', $Get_Details_Row['surname'], PDO::PARAM_STR);
$Update_Details->bindParam(':telephone', $Get_Details_Row['telephone'], PDO::PARAM_STR);
$Update_Details->bindParam(':email', $Get_Details_Row['email'], PDO::PARAM_STR);
if($Update_Details->execute()) {
// It worked!
} else {
// Error Checking
}
}
} else {
// Error Checking
}