1

我正在使用 PHP 和 MySQL (V5.1) 制作一个活动日历,管理员将在其中添加一个活动,然后也会为该活动创建一个出席列表。我有三个表:事件、出席和成员。到目前为止,我可以使用通过 PHP 表单输入的信息来创建事件。我正在尝试通过从刚刚创建的事件中插入事件 ID 以及从成员表中拉入成员列表(使用他们的成员 ID)来更新出席表。但是,没有任何内容可以添加到出席表中。有人可以让我知道我应该做些什么不同的事情吗?

我在表格中使用的一些字段:
事件:event_ID(主键,自动递增)、姓名、位置、日期
出勤:出勤_ID(主键,自动递增)、event_ID、member_ID、出席
成员:member_ID(主键,自动增量),名称,电子邮件

enter code here

这是代码:

mysql_query("SET AUTOCOMMIT=0");
mysql_query("START TRANSACTION");

$query1 = mysql_query("INSERT INTO events (name , location , date) VALUES ('".mysql_real_escape_string($name)."' , '".mysql_real_escape_string($location)."' , '".mysql_real_escape_string($date)."')");

$query2 = mysql_query("INSERT INTO attendance (event_ID , member_ID) SELECT LAST_INSERT_ID(), members.member_ID FROM members");

if ($query1 and $query2) { 
mysql_query("COMMIT");
} else {
mysql_query("ROLLBACK");

}

4

3 回答 3

1

你可以使用mysql_insert_id()

$query1 = mysql_query("INSERT INTO events (name , location , date) VALUES ('".mysql_real_escape_string($name)."' , '".mysql_real_escape_string($location)."' , '".mysql_real_escape_string($date)."')");

$insert_id = mysql_insert_id() ;

$query2 = mysql_query("INSERT INTO attendance (event_ID , member_ID) SELECT {$insert_id}, members.member_ID FROM members") ;
于 2013-02-17T18:40:20.673 回答
0

几个重要的点。首先,如果您获得了最后一个插入 ID,您应该首先执行 LOCK 和 UNLOCK 查询:

  • 锁定表events写入;
  • 解锁桌子

其次,您可以使用 mysqli_insert_id() 方法获取最后插入的 ID。这意味着您在插入的表中必须有一个 AUTO_INCREMENT 字段。

于 2013-02-17T18:41:19.523 回答
0

放入VALUES$query2形成正确的 SQL 语句:

$query2 = mysql_query("INSERT INTO attendance (event_ID , member_ID) **VALUES (**SELECT LAST_INSERT_ID(), members.member_ID FROM members");
于 2013-02-17T18:42:25.023 回答