我正在使用MySQL和PHP构建一个简单的事件注册系统。我有四张桌子:
events: event_id, event_name
instance: instance_id, event_id, date
attendee: attendee_id, attendee_name, attendee_email, attendee_tel
registration: reg_id, attendee_id, instance_id
为了澄清,实例表包含给定事件的实例,即特定日期的特定事件。
当与会者注册(通过表单)时,我想将他们的详细信息写入attendee
表,然后在registration
表中写下他们已注册的事件以及相关{ {1}},这样当我稍后查询attendee_id
表时,它会显示已注册的事件以及由谁注册的事件。
但是,我是SQL的新手(以及一般的数据库,更不用说PHP了),所以我不知道如何才能做到这一点,因为registration
只是刚刚生成的将与会者添加到表中。我可以使用:
attendee_id
表中插入一行
attendee
显然,表格中的$q = "INSERT INTO attendee (attendee_name, attendee_email, attendee_tel)
VALUES ( '$fullname', '$email', '$tel' )";
会抓住这些值。该表格还顺便抓住了$_POST
。
所以我只需要知道如何将相关信息插入instance_id
表。有什么想法吗?
答案 0 :(得分:2)
将数据插入第1个表(与会者)后,使用php函数mysql_insert_id()获取最后一个自动增量ID。
然后运行另一个查询以将数据插入第二个表(注册)。
在这种情况下,为了避免任何数据与两个表不匹配,最好使用BEGIN和COMMIT。因此,如果在第二个查询之间发生任何MySQL错误,它将自动返回角色。
答案 1 :(得分:0)
请参阅mysql_insert_id()
mysql_insert_id()函数返回从先前的INSERT操作生成的AUTO_INCREMENT ID。
答案 2 :(得分:0)
在表格主键和自动增量
中创建这些列events: event_id
instance: instance_id
attendee: attendee_id
registration: reg_id
并且您可以通过在插入查询后立即执行以下代码来运行查询以在这些表中插入时获取最后插入的ID
$id = mysql_insert_id();
适当地使用
答案 3 :(得分:0)
如果您使用mysql_query()将数据插入到与会者表中,请在下一行中写入mysql_insert_id(),它将为您提供最近生成的attendee_id,将其存储在变量中并再次使用此变量插入登记表。这样的事情:
$q = "INSERT INTO attendee (attendee_name, attendee_email, attendee_tel) VALUES ( '$fullname', '$email', '$tel' )";
$rc=mysql_query($q);
$a_id=mysql_insert_id();
现在再次使用$ a_id;
在'registration'表中插入