2010-06-04 3 views
0

입력 데이터 처리를 위해 if...else 루프가있는 페이지가 있습니다.이 페이지는 제출 될 때 두 번 되돌려집니다. 즉, "계속"버튼을 클릭하면 되돌아옵니다. 그리고 두 번째로 "장바구니에 담기"... .... 이제 "계속"버튼을 클릭하면 데이터가 데이터베이스에 삽입되고 if 루프가 실행되고 새로 고침됨에 따라 모든 입력이 표시됩니다 데이터 및 이번에 또 다른 버튼 "장바구니에 담기"를 얻을 수 있습니다 .. 장바구니에 추가 버튼을 클릭하면 else 조건/루프 부분에 포함 된 코드가 실행됩니다 ..내 코드에서 mysql_insert_id() 응용 프로그램에 관한 질문

이제 내 질문은 마치 데이터가 처음에는 If 부분에 삽입 한 후 나중에 else이 실행되었으므로 부분에 마지막으로 삽입 된 데이터를 가져 오기 위해 다른 부분에서 mysql_insert_id() 함수를 사용할 수 있습니까?

If(Button Continue is clicked) 
{ 
    insert query for a product table...... 
} 
else Button Add to Cart is Clicked 
{ 
    mysql_insert_id(); to fetch last id inserted in the above above loop/condition.. 
} 

그래서 else 부분에 마지막으로 삽입 된 ID를 얻을 수 있습니다 : 아래

코드의 유형 I 대해 이야기하고 있는가?

답변

1

귀하의 시나리오를 이해하면 아니오를 선택하십시오. mysql_insert_id (및 그 mySQL 사촌 LAST_INSERT_ID())은 현재 연결에 대해서만 유효한 마지막 삽입 ID를 반환합니다. 즉, 다음 페이지로 전환하면 새 연결이 설정되고 insert_id()이 작동하지 않습니다.

임시 해결책은 삽입 된 ID를 세션 변수에 넣는 것입니다.이 방법은 다른 페이지에서 사용할 수 있습니다. (사용자가 여러 개의 탭/창을 열어 두 번 예약하는 경우주의하십시오. 각 예약 프로세스마다 식별자를 사용해야합니다.)

1

else 부분에 마지막으로 삽입 된 ID를 얻을 수 있습니다. ?

수 없습니다. insert_id를 검색해야하는 유일한 곳은 INSERT를 수행 한 직후입니다. 트랜잭션 특정 데이터를 절대로 세션에 저장하면 안됩니다. 따라서 여러 개의 삽입 ID가 있고이 정보를 서로 다른 페이지간에 전달해야하는 경우 레코드는 단일 '마스터'레코드 (예 : 쇼핑 바구니)를 참조해야합니다. 평생에 걸쳐 식별자를이 레코드에 세션에 저장하는 것이 안전합니다.

c