代码之家  ›  专栏  ›  技术社区  ›  J.Doe

SQL,如何从上一次插入中获取自动ID?

  •  0
  • J.Doe  · 技术社区  · 7 年前

    我正在使用 PHP SQL 并尝试在注册时将用户数据插入两个表中。第一个 user_table 第二次进入 character_table . 我正在使用自动生成 user_id 要链接表,需要获取 用户id 从一开始 INSERT (into user_table) 然后将其添加到 character_表 .

    我尝试了几种方法,这里是我的结束($username、$email、$password和$character在上面定义);

    $sql = "INSERT INTO 
    user_table (id, username, email, password)
    VALUES ('NULL', '".$username."', '".$email."', '".$password."')
    
    INSERT INTO
    character_table (name, id)
    VALUES ('".$character."', 'LAST_INSERT_ID()')";"
    

    我希望user\u表中的“id”与插入character\u表中的“id”匹配。

    当我运行上述操作时,似乎什么都没有发生。以前的尝试总是以id=0结束。从第一次插入中获取ID的正确方法是什么?

    1 回复  |  直到 6 年前
        1
  •  1
  •   JNevill    7 年前
    1. 分别运行您的声明。您将插入的内容放入 user_table ,然后抓住 id 然后将插入内容放入 character_table
    2. 你可以抓住 身份证件 使用 mysql_insert_id 运行插入后。 Note that on the php webpage 详细说明 mysql\u insert\u id mysql* 功能。这导致。。。
    3. 出于对一切神圣事物的热爱,不要将变量直接连接到INSERT语句。如果还没有,请切换到mysqli*函数或PDO,并使用准备好的语句(参数化查询)。如果您使用 mysql 这意味着您没有参数化查询,这意味着您面临sql注入攻击的巨大风险。

    如果/当你切换到mysqli或PDO函数时,你会发现一个等价的函数 mysqli_insert_id() (或 PDO::lastInsertID() )功能