2

PHPフォームからデータベースにデータを保存する際に問題が発生しました。このフォームは、以下にコピーしたinsertというファイルを呼び出します。基本的に、詳細をテーブルスカウトに保存し、last_insert_id()をローカル変数として保存して、テーブルにアイテムを挿入するときに使用する必要があります。emergencyContact。次に、緊急連絡先last_insert_id()を保存して、スカウトテーブルに保存する必要があります。ただし、現時点では機能していません。変数の保存/使用はまだ正しいとは思いません。

<?php
$con = mysql_connect("localhost","user","password");
if (!$con) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db("lex", $con);

mysql_query("INSERT INTO Scout (Unit_id, FirstName, SurName, DOB, Address, Telephone, School, Religion, Ethenic, Child_Doc, Doc_Phone, Allergies, Active)
VALUES ('$_POST[unitid]','$_POST[firstname]','$_POST[lastname]','$_POST[dob]','$_POST[address]','$_POST[phone]','$_POST[school]','$_POST[religion]','$_POST[ethnicidentity]','$_POST[doctorsname]','$_POST[doctorsnumber]','$_POST[health]','$_POST[radio]')");

mysql_query("SET @scout_id = LAST_INSERT_ID()");

mysql_query("INSERT INTO EmergencyContact (Scout_id, Name, Tel, Address) 
VALUES(@scout_id,'$_POST[emergencycontact]','$_POST[emergencyphone]',$_POST[emergencyaddress]')");

mysql_query("SET @emergency_id = LAST_INSERT_ID()");

mysql_close($con);
?>
4

1 に答える 1

0

使用するmysql_insert_id()

$idInsertLast = mysql_insert_id();

結果は、この接続/ユーザーから挿入された最後の AUTOINCREMENT ID です。200 人の異なるユーザーがほぼ同時に挿入トランザクションを実行している場合、userA がレコードを挿入してから mysql_insert_id()、userB および userC を呼び出すまでの間であっても、他のユーザーではなく、それぞれが最後の ID を受け取ります。独自のレコードを挿入しました。

ユーザー間で接続を共有しないように注意してください。各ユーザーが DB への独自の接続を開く限り、すべて問題ありません。

注: mysql_query とライブラリの残りの部分は廃止されており、最終的には将来の php バージョンから削除される予定です。

于 2014-12-12T09:35:18.563 に答える