0 レビュー
3 回答
LAST_INSERT_ID()と別のテーブルの行を使用したPHP/MySQLでの2つの挿入
PHPとMySQL(V5.1)を使用してイベントカレンダーを作成しており、管理者がイベントを追加すると、そのイベントの出席者リストも作成されます。イベント、出席、メンバーの3つのテーブルがあります。これまでのところ、PHPフォームを介して入力された情報を使用してイベントを作成できます。作成したばかりのイベントからイベントIDを挿入し、メンバーテーブルからメンバーのリスト(メンバーIDを使用)を取得して、出席テーブルを更新しようとしています。ただし、テーブルに出席するために何も追加されていません。誰かが私に別のやり方で何をすべきか教えてもらえますか?
テーブルで使用しているフィールドの一部:
イベント:event_ID(主キー、自動インクリメント)、名前、場所、日付
出席:attendance_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");
}
わからない
0
レビュー
答え :
解決策:
を使用できます $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") ;
わからない
0
レビュー
答え :
解決策:
いくつかの重要なポイント。まず、最後の挿入IDを取得する場合は、最初にLOCKクエリとUNLOCKクエリを実行する必要があります。
- ロックテーブル
events
WRITE; - テーブルのロックを解除する
次に、mysqli_insert_id()メソッドを使用して、最後の挿入のIDを取得できます。これは、挿入するテーブルにAUTO_INCREMENTフィールドが必要であることを意味します。
わからない
0
レビュー
答え :
解決策:
VALUES
を$query2
に入れて、正しいSQLステートメントを作成します:
$query2 = mysql_query( "INSERT INTO出席(event_ID、member_ID)** VALUES(** SELECT LAST_INSERT_ID()、members.member_ID FROM members");
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。