我正在开发一个教室网站。
有一个表单可以将学生资料/数据插入数据库表student
。
此网站有5个班级组,ID为id= 1, 2, 3, 4, 5
。
将数据插入数据库表成功。
但我有一个问题:每个学生必须在课堂1 and 2
下,所以当我们插入数据时,我需要数据库每次自动创建两个数据库结果,两个结果都是相同的数据,除了{{ 1}},我的意思是一个结果必须classgroup_id
,第二个结果必须是classgroup_id=1
,我需要mysql自动生成这个,以便在添加每个学生时......任何想法。?
这是我的表结构
这是我用于将数据插入表格的PHP代码
classgroup_id=2
谢谢...... 我只有中级PHP知识
答案 0 :(得分:1)
你不需要PHP来做这个......纯SQL伪解决方案:
INSERT INTO student (student_id name, email) SELECT name, email from student where classgroup_id = ?
如果你构建一个fiddle并留下关于在哪里找到所述小提琴的评论,我很乐意根据你的具体需要调整查询。
答案 1 :(得分:1)
ClassGroups是表格还是静态数字?
如果它们只是静态数字,那么我认为最简单的方法是使用重复数据进行另一次插入。例如,两行应为:
$this->db->query("INSERT INTO " . DB_PREFIX . "student SET user_id = '" . (int)$this->user->getId() . "', name = '" . $this->db->escape($data['name']) . "', email = '" . $this->db->escape($data['email']) . "'");
$this->db->query("INSERT INTO " . DB_PREFIX . "student SET user_id = '" . (int)$this->user->getId() . "', name = '" . $this->db->escape($data['name']) . "', email = '" . $this->db->escape($data['email']) . "', classgroup_id =2");
如果它们在某个表中,那么你可以插入一个插入(代码会更短)但是使用不同的插入语法。例如,您的ClassGroup表只是ClassGroups:
$this->db->query("INSERT INTO " . DB_PREFIX . "student (user_id, name, email, ClassGroup_id)
select " . (int)$this->user->getId() . ", '" . $this->db->escape($data['name']) . "', '" . $this->db->escape($data['email']) . "',ClassGroup_id from ClassGroups where ClassGroup_id=1 or ClassGroup_id=2");
但我认为如果你为每个数据(学生,ClassGroup)做不同的表并为它们做关系表应该是最好的,它不会重复数据,如果你通过主AI收集数据,表学生会更快键而不是varchar类型列名。
答案 2 :(得分:0)
您必须先将记录保存在临时表中,然后再进行操作..试试
//get last insertId
$last_insert_id = $this->db->insert_id();
$new_id = $last_insert_id +1;
$query = "CREATE TEMPORARY TABLE tmp SELECT * FROM yourtable WHERE your_primary_key = $last_insert_id;
UPDATE tmp SET your_primary_key= $new_id,classgroup_id = 2 WHERE your_primary_key = $last_insert_id;
INSERT INTO yourTable SELECT * FROM tmp WHERE your_primary_key = new_id";
$this->db->query($query);
希望你有所了解
答案 3 :(得分:0)
为了避免学生重复参赛作品,您可以制作另一张表格,将学生与他们的班级联系起来。
例如:
<强>学生强>
<强> Classgroups 强>
<强> StudentsPerClassgroup 强>