2014-10-15 2 views
0

나는 비슷한 질문을하지만, 그 중 누구도 내가 시도하고있는 것에 대해 효과가없는 것으로 알고있다.쿼리 내에서 다음 AUTO_INCREMENT ID를 사용합니까?

오디오 파일을 가져 와서 업로드하고 이름을 바꾸고 이름을 저장하는 mysqli/php 시스템을 개발 중입니다. 유일한 문제는 ... 파일의 이름이 "uploadedfile _ [$ id_here] .mp3"이되어야합니다.

전체 업로드 시스템이 정상적으로 작동하지만 가장 마지막 단계에 있습니다. .. 이드를 일하게하는 것.

이 테이블의 id 열은 Auto_Increment입니다. 이 다가오는 새 행에 제공 될 Auto_Increment ID를 "예측"하고 변수를 사용하여 오디오 파일 이름 끝에 태그를 지정하는 방법을 알아야합니다. 내가 시도했습니다

한 가지 방법은 다음과 같습니다

$result = mysqli_query($conn, "SHOW TABLE STATUS LIKE 'test_table'"); 
$row = mysqli_fetch_array($result); 
$nextId = $row['Auto_increment']; 

print $nextId; 

을하지만이 결과를 반환하지 않습니다. 내 연결 파일은 다른 쿼리에 대해 사용 했으므로 제대로 구성되어야하며 정상적으로 작동합니다. 사전에

감사합니다!

+3

다중 사용자 시스템에서 다음 자동 증가 ID를 예측할 수 없습니다. 해결 방법은 스텁 레코드로 삽입을 수행하고 파일 이름에 사용할 ID를 할당 한 다음 필요에 따라 스텁을 업데이트하는 것입니다. –

+1

Mark의 주석에 대한 확장 - 데이터베이스 부분을 트랜잭션에 넣으므로 매우 쉽습니다. 어떤 이유로 든 파일을 유지할 수없는 경우 취소 할 수 있습니다. – Maerlyn

+0

그래서 a_i 값을 가져온 다음 +1을합니까? – Daniel

답변

0

거야?

자동 증가는 매회 1 씩 증가하여 작동합니다. 기록은

$nextId = $row['Auto_increment']; 

는 오는 당신에게 다음 ID를 줄 것이다 ... 난 그냥 PHP에게 자신을 시작했습니다 그러나 확실하게 당신이 당신에 1을 추가 할 수 있습니다, 삽입됩니다. Maerlyn이 말했듯이, Maerlyn이 말한 것처럼, 동시에 두 명의 사용자가있는 경우가 아니라면, 레코드가 삽입되는 동안 임시 테이블에 삽입 할 수 있다고 생각하고, 성공하면 주 테이블에 삽입하고 임시 테이블에서 제거하십시오 . 임시 테이블에 삽입 할 때 먼저 시도하기 전에 먼저 임시 테이블에 레코드가 있는지 확인해야합니다.

그냥 내 두 센트.

+0

달리고, 가치에 1를 추가하고 지금 완전하게 id를 끝에 추가하기 위하여 작동하고있다. 이것은 일반적으로 한 사람 만 사용하는 웹 사이트의 백엔드이기 때문에 중복으로 인해 문제가 발생하지 않아야합니다. 모두에게 감사드립니다! – Daniel

+0

내가 귀하의 질문에 대답했다면, 대답으로 받아 들일 수 있습니다. –