В связи с вступлением в силу новых правил 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
}






UPDATE event_candidate SET firstname=aes_encrypt(firstname,'YOUR_KEY'), surname=aes_encrypt(surname,'YOUR_KEY'), ....;у вас не работает? Он должен зашифровать все поля одним пакетом.