-1

看護師が患者システムにログインすると、看護師に関する詳細が、ユーザー ID を含むセッション変数に保存されます。登録スクリプトを作成して、看護師が新しい患者を登録すると、その ID がユーザー テーブルのスーパー列に格納されるようにしました。これは、患者を自分だけに割り当てることができるようにするためです。

問題は、insert ステートメントを実行すると、看護師のユーザー ID ではなく値 0 がスーパー ユーザー列に格納されることです。これはどのように解決できますか?

ユーザーのプロファイルを持つプロファイル テーブルがあり、ユーザー テーブルにリンクしています。最初の挿入ステートメントを使用して、ユーザー テーブルにレコードを作成しました。2 番目のステートメントで、新しく作成された user_id と同じプロファイル ID を持つレコードをプロファイル テーブルに作成します。関数を使用しようとしていLAST_INSERT_ID()ますが、それも最後の ID ではなく 0 を格納しています。

これが、問題の特定の部分に関する私のコードです。フォーマットが正しくない場合は申し訳ありません。スクリーン リーダーを使用していますが、この Web サイトの書式設定オプションにあまりアクセスできません。

$_post からのフォーム データを、以下で使用するすべての変数に格納しました。

$SuperUser = $_SESSION['SuperUser'];
//insert query for user table
$UserInsert = "insert into user
(User_id,
Username,
Password,
User_level,
SuperUser)
values(null,
'$Username',
'$Password',
'1',
'$SuperUser')";
//run query for inserting data for user table
mysql_query($UserInsert) or die("cannot insert into user");

//Select the last increment id from user table
$LastIdQuery = "Select LAST_INSERT_ID()";
$LastId = mysql_query($LastIdQuery) or die("Cannot select last id");

//insert query for profile table
$ProfileInsert = "insert into profile
(User_id,
FirstName,
LastName,
Dob,
NI_Number,
NHS_Number,
Address1,
Address2,
Town,
Postcode,
Email,
Contact_Number,
Comments)
values('$LastId',
'$FirstName',
'$LastName',
'$DobYear-$DobMonth-$DobDay',
'$NI_Number',
'$NHS_Number',
'$Address1',
'$Address2',
'$Town',
'$Postcode',
'$Email',
'$Contact_Number',
'$Comments')";
//insert into profile
mysql_query($ProfileInsert) or die("Unable to insert in profile");
mysql_close();
4

1 に答える 1

0

$id = mysql_insert_id()実行している LAST_INSERT_ID 関数の代わりに実行してみてください。また、mysql 接続を変数に格納している場合は、それを に渡すとmysql_insert_id()より正確になります。たとえば、データベースに接続する場合:

$link = mysql_connect(......);

じゃあ後で:

mysql_query($ProfileInsert) or die("Unable to insert in profile");
$id = mysql_insert_id( $link );
mysql_close( $link );
于 2012-04-30T23:21:45.413 に答える