将数据插入多个表

0 mysql database-design php application-design

对于我的系统,学生需要通过填写注册表(个人、联系方式和课程详细信息;还有用户名和密码)来创建一个用户帐户。

我需要通过一个表单收集注册数据,并将收集到的数据插入到我数据库中的两个相关表中(student表中的所有学生详细信息和users)。

我如何最好地在 php 中编码?

实体关系模型

jyn*_*nus 5

  • 使用mysqliPDO为 PHP库,不要使用 mysql,因为它已被弃用
  • 使用准备好的语句:它们更干净,更不容易被 SQL 注入,在某些情况下,执行速度更快
  • 使用异常捕获整个代码中的错误 - 查询失败、查询被终止、数据库崩溃、无法连接……
  • 如果您对 SQL 感到害怕,ORM 可以帮助您构建查询,但它们并非没有问题
  • 假设您想要 1:1 的关系,学生的 id 应该有一个引用 user_id 的外键。要在 MySQL 上使用外键,您需要使用 InnoDB 存储引擎。
  • 您不能使用单个语句插入两个表,因此您应该使用事务。在插入到第一个表之前启动一个事务,然后插入到第二个表,然后COMMIT是更改。这样,两个插入要么成功,要么都失败。事务也需要 InnoDB。
  • student_id/user_id可能是唯一的任意键。您可以使用该auto_increment列的属性并执行以下操作:

    START TRANSACTION;
    INSERT INTO student (last_name, fist_name, ...) VALUES ('Crespo', 'Jaime', ...);
    INSERT INTO users VALUES (last_insert_id(), 'jynus', 'hashedpassword', 'student');
    COMMIT;
    
    Run Code Online (Sandbox Code Playgroud)