想要加密某个特定的数据变量,但不断收到“PHP致命错误:调用未定义的函数AES_ENCRYPT()......”
研究让我暗示它使用的是PHP而不是MySQL?
$key="xyz";
$stmt = mysqli_prepare($mysqli, "INSERT INTO details (FirstName, LastName, EncryptThis) VALUES (?,?,?)");
if ($stmt === false) {
trigger_error('Statement failed! ' . htmlspecialchars(mysqli_error($mysqli)), E_USER_ERROR);
}
$bind = mysqli_stmt_bind_param($stmt, "sss", $FirstName, $LastName, AES_ENCRYPT('$EncryptThis','$key'));
if ($bind === false) {
trigger_error('Bind param failed!', E_USER_ERROR);
}
$exec = mysqli_stmt_execute($stmt);
在数据库中使用varbinary ...
尝试了
的各种用法AES_ENCRYPT('$EncryptThis','$key')
EG
AES_ENCRYPT($EncryptThis,$key)
等等
答案 0 :(得分:1)
MySQL期望值作为绑定参数传递。不是函数名称或其他SQL表达式。只需值。
如果要调用MySQL AES_ENCRYPT函数,则需要将其作为SQL文本(作为SQL语句准备的字符串)的一部分出现。函数的名称不能作为绑定参数的一部分传递。
像这样:
"INSERT ... VALUES ( ? , ? , AES_ENCRYPT( ? , ? ) )"
mysqli_stmt_bind_param($stmt, "ssss", $FirstName, $LastName, $EncryptThis, $key);