我使用 PHP PDO 从 SELECT 查询进行 INSERT 时有一个奇怪的行为。直接在 MySQL 中测试查询,效果很好,我插入了行:
INSERT INTO sessionid (enc_id, enc_pass, enc_date)
SELECT AES_ENCRYPT(username, 'aeskey'), AES_ENCRYPT(pwd, 'aeskey'),
DATE_ADD(NOW(), INTERVAL 15 SECOND) FROM users WHERE username = 'a_user_name';
但是使用 PDO,我一次为每个用户插入一行(279 行)...这是 PHP:
$sql_enc = '
INSERT INTO sessionid (enc_id, enc_pass, enc_date)
(SELECT AES_ENCRYPT(username, :aeskey), AES_ENCRYPT(pwd, :aeskey), DATE_ADD(NOW(), INTERVAL 15 SECOND) FROM users WHERE username = :username)
';
$res_enc = $pdo->prepare($sql_enc);
$res_enc->bindParam(':aeskey', $aeskey);
$res_enc->bindParam(':username', $username);
$res_enc->bindParam(':pwd', $username);
$res_enc->execute();
$res_enc = null;
我错过了什么?我几乎可以肯定它没什么,但无法让它插入单行。
谢谢。
法比恩。
最佳答案
这并不是可能的问题,而是您在代码的密码字段中输入了用户名。在您的查询中,您在此处插入 aeskey。这是我能发现的唯一区别。
关于php - MySQL 使用 PDO 从 SELECT 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6423384/