【问题标题】:insert records from one table to another将记录从一张表插入到另一张表
【发布时间】:2016-09-20 16:25:29
【问题描述】:

您好,我正在尝试将记录从一个表添加到另一个表,一旦我添加了“用户”记录,正在选择的表包含可用安全选项的行,并且正在插入的表是子表用户表,详细说明安全选项。

我在之前的帖子中看到了这段代码,我确信它工作得很好,但是我正在尝试修改它,以便语句中的值包括两部分,一部分来自选择查询,另一部分是来自主记录。#

这是我从这个网站找到的原始代码:

INSERT INTO def (catid, title, page, publish) 
SELECT catid, title, 'page','yes' from `abc`

这就是我想要做的:

$sql = "INSERT INTO Link_UserSecurity (UserFk, ModuleFk) values ('".$keys["UserPk"]."', SELECT ModulePk from Global_Modules)";
CustomQuery($sql);

这是我得到的错误:

INSERT INTO Link_UserSecurity (UserFk, ModuleFk) 值 ('4', SELECT 来自 Global_Modules 的 ModulePk)

详情请见screenshot

显然我没有正确连接 from 语句,但希望有任何帮助吗?

【问题讨论】:

    标签: php mysql insert


    【解决方案1】:

    您可以将$keys["UserPk"] 变量作为SQL 中的常量插入:

    $sql = "INSERT INTO Link_UserSecurity (UserFk, ModuleFk) SELECT '{$keys["UserPk"]}', ModulePk from Global_Modules";
    

    请注意,$keys["UserPk"] 必须转义才能将其添加到查询中。在 PDO 中,它看起来像这样:

    $keys["UserPk"] = $pdo->quote($keys["UserPk"]);
    
    $sql = "INSERT INTO Link_UserSecurity (UserFk, ModuleFk) SELECT '{$keys["UserPk"]}', ModulePk from Global_Modules";
    

    【讨论】:

    • 感谢这个排序,但你错过了 userpk 之间的逗号,例如 $sql = "INSERT INTO Link_UserSecurity (UserFk, ModuleFk) SELECT '{$keys["UserPk"]}', ModulePk from Global_Modules ";
    • @user5641678:谢谢,加了逗号!
    【解决方案2】:

    可能是与双引号序列有关的问题

    "INSERT INTO Link_UserSecurity (UserFk, ModuleFk) 
    values ('". $keys['UserPk']. "', SELECT  ModulePk from Global_Modules)";
    

    但你也可以使用选择插入

    "INSERT INTO Link_UserSecurity (UserFk, ModuleFk) 
    SELECT '" . $keys['UserPk']. "' ,  ModulePk from Global_Modules)";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-23
      • 1970-01-01
      • 1970-01-01
      • 2013-04-22
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      相关资源
      最近更新 更多