当前位置: 首页 > 面试题库 >

使用PDO从SELECT进行MySQL INSERT

邴奇逸
2023-03-14
问题内容

使用SELECT查询从INSERT使用PHP PDO时,我有一个奇怪的行为。直接在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;

我想念什么?我几乎可以确定这没什么,但是不能让它插入那一行。

谢谢你。

fabien。


问题答案:

并非这是可能的问题,但是您在代码的密码字段中输入了用户名。在查询中,在此插入aeskey。这是我能发现的唯一区别。



 类似资料:
  • 问题内容: 我已经尝试按照PHP.net说明进行查询,但是我不确定执行此操作的最佳方法。 如果可能,我想使用参数化查询来返回表中字段与参数匹配的表。这将返回一个,因为它将是唯一的。 然后,我想将其用于另一个表中,因此我将需要确定它是否成功。 我还读到您可以准备查询以供重用,但是我不确定这有什么帮助。 问题答案: 您选择像这样的数据: 您以相同的方式插入: 我建议您将PDO配置为在出错时引发异常。如

  • 问题内容: 我有一组一对一的映射A->苹果,B->香蕉,等等。我的表中有一列的值为A,B,C。 现在,我正在尝试使用选择语句,这将给我直接结果 但是我没有得到正确的结果,请帮助我。 问题答案: 这只是case语句的语法,看起来像这样。 提醒一下;不执行赋值,该值成为列内容。(如果您想将其分配给变量,则可以将其放在CASE语句之前)。

  • 问题内容: 我已经阅读了有关如何编写这些查询的多个示例,但是我正在努力使此特定代码像在使用时运行 这是匹配以a开头的用户名的正确方法吗? 问题答案: 不,您不需要内部单引号 您现在正在运行的语句将尝试匹配而不是匹配 bindParam将确保在将所有字符串数据提供给SQL语句时自动正确引用。

  • 问题内容: 所以我有一个旧数据库,正在迁移到新数据库。新版本的架构略有不同,但大多兼容。另外,我想从零开始重新编号所有表。 目前,我一直在使用编写的工具手动检索旧记录,将其插入新数据库,并更新旧数据库中的v2 ID字段以在新数据库中显示其对应的ID位置。 例如,我从MV5.Posts中选择并将其插入MV6.Posts。插入后,我在MV6.Posts中检索新行的ID,并在旧的MV5.Posts.MV

  • 问题内容: 我想知道是否可以在SQLAlchemy中生成一个语句而无需使用显式地请求它。如果我使用: 然后它会生成如下内容: 这在使用InnoDB的MySQL中要慢得多。我正在寻找一种不需要表具有已知主键的解决方案,如使用SQLAlchemy获取表中的行数中所建议。 问题答案: 我设法在两层上使用SQLAlchemy呈现以下SELECT。 SQL表达式层的用法 来自ORM层的用法 您只需将其子类化

  • 问题内容: 我正在尝试使用PDO从表中检索数据,只是我似乎无法向浏览器输出任何内容,只是得到了一个纯白页。 问题答案: 例。 这是您的dbc类 您的PHP页面: