[英]Using LAST_INSERT_ID() to insert newest id from one table to another
[英]Two inserts in PHP/MySQL using LAST_INSERT_ID() and rows from another table
我正在使用PHP和MySQL(V5.1)編寫事件日歷,其中管理員將添加事件,然后還將創建該事件的出席者列表。 我有三個表:活動,出勤和成員。 到目前為止,我可以使用通過PHP表單輸入的信息來創建事件。 我正在嘗試通過從剛剛創建的事件中插入事件ID以及從成員表中拉入成員列表(使用其成員ID)來更新出勤表。 不過,沒有任何內容可以出席會議。 有人可以讓我知道我應該做些什么嗎?
我在表中使用的一些字段:
事件:event_ID(主鍵,自動遞增),名稱,位置,日期
出席人數:出席人數ID(主鍵,自動遞增),事件ID,會員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");
}
您可以使用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") ;
幾個重要點。 首先,如果獲得最后一個插入ID,則應首先執行LOCK和UNLOCK查詢:
events
寫; 其次,可以使用mysqli_insert_id()方法獲取最后插入的ID。 這意味着您要插入的表中必須具有AUTO_INCREMENT字段。
將VALUES
放入$query2
以形成正確的SQL語句:
$query2 = mysql_query("INSERT INTO attendance (event_ID , member_ID) **VALUES (**SELECT LAST_INSERT_ID(), members.member_ID FROM members");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.