Php AES_加密MySQL更新查询

Php AES_加密MySQL更新查询,php,mysql,encryption,aes,Php,Mysql,Encryption,Aes,我希望你能帮忙。我试图在我的更新查询中使用AES_加密,但无法使其工作 我试图加密first_name变量,但当我运行查询时,它拒绝更新字段。当我从更新查询中删除AES_ENCRYPT方法时,它工作得非常好 我当前的代码如下所示: if(!define('SALT')) define('SALT','4a7s3n3j93n98lk'); $sql = "UPDATE cases SET first_name=?, last_name=? WHERE case

我希望你能帮忙。我试图在我的更新查询中使用AES_加密,但无法使其工作

我试图加密first_name变量,但当我运行查询时,它拒绝更新字段。当我从更新查询中删除AES_ENCRYPT方法时,它工作得非常好

我当前的代码如下所示:

if(!define('SALT')) define('SALT','4a7s3n3j93n98lk');

$sql = "UPDATE cases 
    SET first_name=?, 
        last_name=?
    WHERE cases_id=?";

$query = $db->prepare($sql);
$query->execute(array(
    AES_ENCRYPT('$first_name','".SALT."'), 
    $last_name,
   $id));
$db = null;

我通过以下修订成功解决了AES_ENCRYPT update查询问题:

$encrypt_key = '4a7s3n3j93n98lk';

$statement = $db->prepare("UPDATE cases SET 
first_name = AES_ENCRYPT(:first_name, '$encrypt_key'), 
last_name = AES_ENCRYPT(:last_name, '$encrypt_key'), 
WHERE cases_id = :id");

$statement->bindParam(':id', $id, PDO::PARAM_INT);
$statement->bindParam(':first_name', $first_name, PDO::PARAM_STR);
$statement->bindParam(':last_name', $last_name, PDO::PARAM_STR);
$statement->execute();

$db = null;

AES_ENCRYPT不是php函数。
if(!define('SALT'))
应该是
if(!defined('SALT'))
根据from defined()-检查给定的命名常量是否存在。对于Jon使用错误的术语,我深表歉意。该问题已被编辑。感谢输入Funk 49,我将更正定义的命名常量,看看这是否有帮助。