현재 위치: > 최신 기사 목록> mysqli_stmt :: $ insert_id를 통해 마지막 삽입 된 레코드의 ID를 얻는 방법과 후속 쿼리 작업을 수행하는 방법은 무엇입니까?

mysqli_stmt :: $ insert_id를 통해 마지막 삽입 된 레코드의 ID를 얻는 방법과 후속 쿼리 작업을 수행하는 방법은 무엇입니까?

gitbox 2025-08-04

데이터베이스 작업에 PHP를 사용할 때, 특히 MySQLI의 전처리 명령문 ( MySQLI_STMT )을 사용하여 데이터를 삽입 한 후에는 종종 후속 쿼리, 업데이트 또는 협회 작업에 방금 삽입 된 레코드의 자동화 ID를 얻어야합니다. 이 기사는 mysqli_stmt :: $ insert_id를 통해 마지막으로 삽입 된 ID를 얻는 방법을 자세히 소개하고 후속 쿼리 에이 ID를 사용하는 방법을 보여줍니다.

1. mysqli_stmt :: $ insert_id 란 무엇입니까?

mysqli_stmt :: $ insert_id는 전처리 명령문을 통해 삽입 된 레코드의 자동화 된 기본 키 ID를 얻는 데 사용되는 mysqli_stmt 객체의 속성입니다. 이 속성은 삽입 작업이 수행되고 Auto_increment 필드가 데이터 테이블에 설정된 경우에만 유효한 ID를 반환합니다.

2. 예제를 사용하십시오

다음은 레코드를 삽입하고 삽입 된 ID를 가져온 다음이 ID를 사용하여 방금 삽입 한 데이터를 쿼리하는 방법에 대한 완전한 예입니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"test_db"</span></span><span>);

</span><span><span class="hljs-comment">// 연결을 확인하십시오</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_errno) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"연결이 실패했습니다: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error);
}

</span><span><span class="hljs-comment">// 데이터 삽입 SQL</span></span><span>
</span><span><span class="hljs-variable">$insert_sql</span></span><span> = </span><span><span class="hljs-string">"INSERT INTO users (username, email) VALUES (?, ?)"</span></span><span>;
</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-variable">$insert_sql</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$stmt</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"전처리가 실패했습니다: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;error);
}

</span><span><span class="hljs-comment">// 매개 변수를 바인딩하고 삽입을 수행하십시오</span></span><span>
</span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-string">'john_doe'</span></span><span>;
</span><span><span class="hljs-variable">$email</span></span><span> = </span><span><span class="hljs-string">'[email protected]'</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">"ss"</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$email</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-comment">// 삽입물을 얻으십시오 ID</span></span><span>
</span><span><span class="hljs-variable">$inserted_id</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;insert_id;
</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">$inserted_id</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;

</span><span><span class="hljs-comment">// 삽입 문을 닫습니다</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();

</span><span><span class="hljs-comment">// 삽입물을 사용하십시오 ID 쿼리를 수행하십시오</span></span><span>
</span><span><span class="hljs-variable">$select_sql</span></span><span> = </span><span><span class="hljs-string">"SELECT * FROM users WHERE id = ?"</span></span><span>;
</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-variable">$select_sql</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$stmt</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"查询语句전처리가 실패했습니다: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;error);
}

</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">"i"</span></span><span>, </span><span><span class="hljs-variable">$inserted_id</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">$result</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">get_result</span></span><span>();

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">fetch_assoc</span></span><span>()) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"쿼리 결과:\n"</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$row</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"해당 기록이 없습니다。\n"</span></span><span>;
}

</span><span><span class="hljs-comment">// 자원을 닫으십시오</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

3. 주목할만한 것들

  1. 동일한 데이터베이스 연결을 사용하고 있는지 확인하십시오 <br> 삽입 및 쿼리가 다른 연결을 사용하면 insert_id가 삽입 된 ID를 올바르게 반영하지 않습니다.

  2. 테이블에는 auto_increment 필드 <br>가 포함되어야합니다 그렇지 않으면 삽입이 성공하더라도 insert_id는 유효한 값을 반환하지 않습니다.

  3. insert_id는 연결 객체가 아닌 문 개체의 속성입니다 <br> $ stmt-> insert_id를 얻으 려면 $ stmt를 사용하십시오. 그렇지 않으면 $ mysqli-> insert_id를 사용해야합니다.

IV. 응용 프로그램 시나리오

  • 주문, 사용자, 기사 등을 삽입 한 후 기본 키 ID를 얻으십시오. 기록을 세우십시오.

  • 사용자가 데이터를 제출 한 후 자동 점프 또는 피드백 작업을 구현하십시오.

  • 작업 기록을위한 고유 식별자는 로그 또는 감사 시스템을 초래합니다.

5. 요약

mysqli_stmt :: $ insert_id를 통해 마지막으로 삽입 된 레코드 ID를 쉽게 얻을 수 있으므로보다 복잡한 데이터 작동 로직을 구현할 수 있습니다. 실제 개발 에서이 방법은 데이터의 정확성과 일관성을 보장하는 데 도움이되며 보안 데이터베이스 작업에 MySQLI를 사용하는 권장 방법이기도합니다.