2012-04-30 42 views
-1

當護士登錄到患者系統時,關於她的詳細信息存儲在會話變量中 - 包括她的用戶標識。我創建了一個註冊腳本,以便當護士註冊一名新患者時,她的ID存儲在用戶表的超級列中。這樣病人才可以分配給她。將會話數據存儲到mysql表和last_insert_id函數

的問題是,當我運行的INSERT語句,值0被存儲在超級用戶列,而不是護士的用戶ID。這怎麼解決?

我有了用戶的輪廓的輪廓表,並將其鏈接到用戶表。我已經使用第一個插入語句在用戶表中創建記錄。我希望第二條語句在配置文件表中創建一個記錄,配置文件ID與新創建的user_id相同。我試圖使用LAST_INSERT_ID()函數,但它也是存儲0而不是最後一個id。

這是我的代碼圍繞特定部分的問題。如果格式不正確,我很抱歉。我正在使用屏幕閱讀器和本網站上的格式化選項,這對我來說是無法訪問的。

我已經將表單數據從$ _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

我的眼睛都在流血 – zerkms

回答

0

嘗試做$id = mysql_insert_id(),而不是你正在做的LAST_INSERT_ID功能。另外,如果你將mysql連接存儲在一個變量中,將它傳遞給mysql_insert_id()可以使它更加準確。連接E.g當數據庫:

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

再後來:

mysql_query($ProfileInsert) or die("Unable to insert in profile"); 
$id = mysql_insert_id($link); 
mysql_close($link); 
+0

謝謝!工作正常! –

+0

你能不能也請嘗試幫助我在不插入超級用戶列的會話變量?它正在被正確存儲,因爲我已經打印了它來測試。謝謝 –

+0

@ChamandeepSingh不知道,檢查以確保id是一個int,如果它的一個字符串(即除了數字以外的任何東西),如果你的db列是int類型的,它將被存儲爲0。並單擊複選框以接受答案 –