현재 위치: > 최신 기사 목록> 주문 번호 또는 고유 식별자를 생성하기 위해 MySQLI_STMT :: $ insert_id를 활용하기위한 모범 사례는 무엇입니까?

주문 번호 또는 고유 식별자를 생성하기 위해 MySQLI_STMT :: $ insert_id를 활용하기위한 모범 사례는 무엇입니까?

gitbox 2025-08-28

1. mysqli_stmt :: $ insert_id를 이해하십시오

mysqli_stmt :: $ insert_id는 PHP MySQLI Extension에서 제공하는 속성입니다. 삽입 작업으로 명령문을 실행 한 후 방금 삽입 된 auto_increment 값을 레코드에 반환합니다. 이 값은 일반적으로 고유 식별자를 생성하기위한 기초로 사용됩니다. $ insert_id삽입 문을 실행 한 후에 만 ​​유효합니다.

예를 들어, 자체 성장 필드 Order_ID가 있는 주문 테이블이 있다고 가정 해 봅시다. 주문의 고유 식별자를 저장하는 데 사용됩니다. 새 순서가 삽입되면 $ insert_id는 해당 순서의 order_id를 반환합니다.

 <span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO orders (product_name, quantity, price) VALUES (?, ?, ?)"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"sid"</span></span><span>, </span><span><span class="hljs-variable">$product_name</span></span><span>, </span><span><span class="hljs-variable">$quantity</span></span><span>, </span><span><span class="hljs-variable">$price</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();

</span><span><span class="hljs-variable">$order_id</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;insert_id;  </span><span><span class="hljs-comment">// 새로 삽입 된 주문을 받으십시오ID</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"새로운 질서ID: "</span></span><span> . </span><span><span class="hljs-variable">$order_id</span></span><span>;
</span></span>

위의 코드 스 니펫에서 순서를 삽입하는 작업을 수행하고 $ stmt-> insert_id를 통해 삽입 된 순서의 주문 _id를 얻었습니다.


2. insert_id를 사용하여 고유 식별자를 생성하십시오

Auto_increment 값 자체는 정수 유형의 고유 식별자이지만 때로는이 식별자가 더 읽기 쉬운 또는 타임 스탬프, 제품 카테고리 및 기타 정보와 같은 특정 비즈니스 요구를 충족시키기를 원합니다. 현재 insert_id를 결합하여 더 많은 비즈니스 지향 주문 번호 또는 기타 고유 식별자를 생성 할 수 있습니다.

주문 번호를 생성하는 몇 가지 일반적인 방법은 다음과 같습니다.

2.1 insert_id 및 현재 시간에 따라 주문 번호 생성

insert_id를 현재 타임 스탬프와 결합하여보다 고유 한 주문 번호를 생성 할 수 있습니다. 이러한 방식으로, 고유성을 보장하는 것 외에도 주문 번호에는 시간 정보가 포함되어있어 쿼리 및 정렬이 용이 해집니다.

 <span><span><span class="hljs-variable">$order_id</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;insert_id;
</span><span><span class="hljs-variable">$timestamp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">"YmdHis"</span></span><span>);  </span><span><span class="hljs-comment">// 현재 타임 스탬프,체재:연도, 월, 일, 시간, 분, 두 번째</span></span><span>
</span><span><span class="hljs-variable">$unique_order_id</span></span><span> = </span><span><span class="hljs-string">"ORD"</span></span><span> . </span><span><span class="hljs-variable">$timestamp</span></span><span> . </span><span><span class="hljs-title function_ invoke__">str_pad</span></span><span>(</span><span><span class="hljs-variable">$order_id</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-string">'0'</span></span><span>, STR_PAD_LEFT);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"생성 된 주문 번호: "</span></span><span> . </span><span><span class="hljs-variable">$unique_order_id</span></span><span>;
</span></span>

이 예에서 주문 번호 형식은 Ord20230714153001234 이며, 여기서 20230714153001 은 현재 시간이고 234는 insert_id 에서 얻은 고유 주문 ID입니다.

2.2 제품 범주 및 insert_id 에 따라 주문 번호 생성

애플리케이션 시나리오에서 주문 번호가 제품 범주와 연결되어야하는 경우 제품 정보를 Insert_id 와 결합하여 주문 번호를 생성 할 수 있습니다. 예를 들어, 전자 상거래 플랫폼은 주문 번호의 접두사를 제품 범주의 코드로 설정하려고 할 수 있습니다.

 <span><span><span class="hljs-variable">$product_category_code</span></span><span> = </span><span><span class="hljs-string">"ELEC"</span></span><span>;  </span><span><span class="hljs-comment">// 전기 제품을 가정합니다</span></span><span>
</span><span><span class="hljs-variable">$order_id</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;insert_id;
</span><span><span class="hljs-variable">$unique_order_id</span></span><span> = </span><span><span class="hljs-variable">$product_category_code</span></span><span> . </span><span><span class="hljs-string">"-"</span></span><span> . </span><span><span class="hljs-title function_ invoke__">str_pad</span></span><span>(</span><span><span class="hljs-variable">$order_id</span></span><span>, </span><span><span class="hljs-number">6</span></span><span>, </span><span><span class="hljs-string">'0'</span></span><span>, STR_PAD_LEFT);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"생성 된 주문 번호: "</span></span><span> . </span><span><span class="hljs-variable">$unique_order_id</span></span><span>;
</span></span>

이러한 방식으로 생성 된 주문 번호는 ELEC-000023 일 수 있으며, 여기서 Elec은 제품 범주를 나타내고 000023은 insert_id를 기반으로 생성 된 고유 식별자입니다.


3. 예방 조치 및 모범 사례

mysqli_stmt :: $ insert_id를 사용하는 경우 고유성을 보장하는 것 외에도 다음과 같은 핵심 사항에주의를 기울여야합니다.

3.1 거래의 영향

트랜잭션을 사용하는 경우 insert_id는 트랜잭션에서 마지막으로 성공적으로 삽입 된 레코드의 ID를 반환 할 수 있으므로 트랜잭션에 여러 삽입 문이 포함되어 있으면 올바른 위치에서 $ insert_id를 사용하십시오. 트랜잭션이 롤백되면 insert_id 의 값도 재설정됩니다.

3.2 보안

insert_id 에 의해 고유 식별자를 생성 할 수 있지만 경우에 따라 식별자의 예측 불가능 성을 보장해야 할 수도 있습니다. 예를 들어, 순수한 숫자 유형 식별자를 주문 번호로 사용하여 악의적으로 추측 할 위험을 줄이지 마십시오. 날짜, 타임 스탬프 및 기타 방법을 결합하면 식별자의 복잡성과 보안이 향상 될 수 있습니다.

3.3 auto_increment 값의 재설정

데이터베이스 테이블의 auto_increment 값이 수동으로 재설정되면 (예 : Alter Table 조작이 관리자가 조작을 수행 한 경우) insert_id 의 값이 재설정되거나 복제 될 수 있습니다. 따라서 테이블을 건강하게 유지하고 불필요한 작업을 피하는 것이 매우 중요합니다.