2012-03-16 3 views
1

인근의 모든 레스토랑에 대한 데이터베이스를 유지하는 어플리케이션이 있습니다. 새 항목을 추가 할 때 레스토랑 이미지를 몇 개 추가 할 수있는 옵션이 있습니다.엔트리 현재 ID

이제 문제 : 다른 레스토랑 이미지를 mysql 자동 증분 ID에 저장된 레스토랑 ID라는 이름의 분리 된 폴더로 정렬하고 싶습니다. 여기서 유일한 문제는, 그 id를 미리 알지 못한다는 것입니다.

양식 예 : 그래서

text input - title 
text input - address 
text input - phone 
file input - image 
file input - image 

, 내가 지금 무엇을해야합니까?

I. 마지막 ID를 얻고, 테이블을 잠그고, ID로 이름 지정된 폴더를 만들고, 이미지를 저장하고, 이미지 경로를 포함한 mysql 데이터베이스에 정보를 저장하고 테이블의 잠금을 해제합니다.

또는

II. 이미지 경로를 제외한 모든 정보를 mysql 데이터베이스에 저장하고, PHP mysql_insert_id를 사용하고, id라는 폴더를 만들고, 이미지를 저장하고, 이미지 경로를 mysql 데이터베이스에 저장한다.

또는

iii. 더 나은 솔루션?

답변

2

이런 종류의 일은 일반적으로 옵션 II로 수행됩니다. 데이터베이스에 기본 정보 행을 저장하고 mysql_insert_id() 또는 기본 MySQL LAST_INSERT_ID() 함수를 통해 마지막 삽입 ID를 가져온 다음 필요한 경우 관련 테이블에 행을 저장하고 파일 시스템 데이터를 저장할 이미지 디렉토리를 만듭니다.

데이터베이스에 저장하려는 이미지 경로가 메인 레스토랑 테이블로 다시 일대 다 관계로 다른 테이블로 이동한다고 가정하면 어쨌든 마지막 삽입 ID를 알아야합니다 . 여러 작업에서이 작업을 수행하는 것에 대해 걱정하지 마십시오. 대부분의 RDBMS에 LAST_INSERT_ID()과 같은 기능이있는 이유입니다.

+0

추가 정보 주셔서 감사합니다. :) –

1

자동 증가 열을 사용하는 경우. 삽입 명령문 바로 다음에 last_insert_id() 함수를 호출하여 마지막으로 삽입 된 레코드의 ID를 검색 할 수 있습니다.

는 문서에 대한 링크를 참조하십시오

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id

그것의 중요한 당신이 동일한 트랜잭션/연결 내에서 할 것을 그렇지 않으면 값이 잘못 될 수 있습니다.

1

사진을 구성하기 위해 레스토랑의 ID를 사용할 필요가 없습니다. 특히 당신이 설명하는 타이밍 문제가 생기기 때문에. 나는 다른 고유 한 ID를 만들 것입니다 - picture_folder_id 또는 무엇이라고 부르세요 - 그리고 그림의 폴더 이름을 사용하십시오. 이 ID에 고유성을 적용하는 한 충돌이 발생하지 않으며 타이밍 문제 또는 잠금이 발생하지 않습니다.