php - MySQL 使用 PDO 从 SELECT 插入

标签 php mysql sql insert pdo

我使用 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/

相关文章:

php - Jquery 无法将变量传递给 php

php - Magento:可以从 shell ssh 运行导出配置文件

mysql - 删除行导致锁定超时

SQL:使用 WHERE AND 而不是 HAVING

PHP如何将数据 append 到序列化数组中

php - Laravel Controller 错误 - 类不存在

mysql - mysql如何处理现实世界中的海量连接?

mysql - SQL NOT BETWEEN 查询

sql - 从另一个系统获取数据时选择 id 的最佳实践

sql - 多次选择 top( x )