2012-04-30 4 views
-1

간호사가 환자 시스템에 로그인하면 그녀에 대한 세부 정보가 세션 변수에 저장됩니다 (그녀의 사용자 ID 포함). 간호사가 새 환자를 등록 할 때 ID가 사용자 테이블의 수퍼 열에 저장되도록 등록 스크립트를 만들었습니다. 이것은 환자가 그녀에게만 할당 될 수 있도록하기 위해서입니다.mysql 테이블과 last_insert_id 함수에 세션 데이터 저장

문제는 insert 문을 실행할 때 값 0이 간호사의 사용자 ID 대신 슈퍼 사용자 열에 저장된다는 것입니다. 어떻게이 문제를 해결할 수 있습니까?

사용자 프로필이 있고 사용자 테이블에 연결되는 프로필 테이블이 있습니다. 첫 번째 insert 문을 사용하여 사용자 테이블에 레코드를 만들었습니다. 두 번째 명령문에서 프로파일 ID가 새로 작성된 user_id와 동일한 프로파일 테이블에 레코드를 작성하기를 원합니다. LAST_INSERT_ID() 함수를 사용하려하지만 마지막 ID가 아닌 0을 저장하고 있습니다.

문제의 특정 부분에 대한 내 코드는 다음과 같습니다. 포맷이 올바르지 않다면 유감입니다. 나는 화면 판독기를 사용하고 있으며이 웹 사이트의 서식 옵션은 나에게 매우 접근하기 어렵다.

$ _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

대신에 당신이하고있는 LAST_INSERT_ID 기능의 $id = mysql_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); 
+0

감사합니다! 그게 잘 작동합니다! –

+0

수퍼 유저 열에 삽입하지 않은 세션 변수를 도와 주시겠습니까? 테스트 할 수 있도록 인쇄 한대로 올바르게 저장됩니다. 감사합니다 –

+0

@ChamandeepSingh 모르겠다. id가 int인지 확인하십시오. 문자열이 숫자가 아닌 다른 문자열을 포함하고 있다면 db 열이 int 유형 인 경우 0으로 저장됩니다. 확인란을 클릭하여 대답을 수락하십시오. –