데이터베이스 작업에 PHP의 MySQLI 확장을 사용할 때 방금 삽입 된 데이터의 자동 성장 ID를 얻는 것이 일반적인 요구 사항입니다. 특히 전처리 명령문 ( MySQLI_STMT )을 사용하여 삽입 작업을 수행 한 후에는 삽입 레코드의 자동 점수 기본 값을 올바르게 얻는 것이 특히 중요합니다. 이 기사는 mysqli_stmt :: $ insert_id 속성을 통해이 값을 정확하게 얻는 방법을 자세히 소개합니다.
MySQL 데이터베이스의 일부 테이블 필드 (일반적으로 기본 키)는 자동으로 성장하도록 설정할 수 있으며 (auto_increment) 데이터베이스는 새 레코드를 삽입 할 때마다 새 고유 ID를 자동으로 생성합니다. 프로그램 터미널은 후속 작업 (예 : 업데이트, 협회 등)을 용이하게하기 위해이 ID를 알아야합니다.
일반적으로 SQL 주입의 위험을 피하기 위해 전처리 진술이 권장됩니다. 데이터 삽입을위한 샘플 코드는 다음과 같습니다.
<?php
$mysqli = new mysqli("gitbox.net", "username", "password", "database");
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
$stmt = $mysqli->prepare("INSERT INTO users (username, email) VALUES (?, ?)");
$username = "alice";
$email = "[email protected]";
$stmt->bind_param("ss", $username, $email);
if ($stmt->execute()) {
echo "성공적으로 삽입하십시오!";
} else {
echo "삽입 실패: " . $stmt->error;
}
?>
이 예에서는 전처리 문을 통해 새로운 사용자 데이터를 안전하게 삽입합니다.
MySQLI_STMT 객체에는 $ insert_id 속성이 있으며, 마지막 삽입 작업에서 생성 된 자동 성장 ID를 얻는 데 사용할 수 있습니다. 획득 방법은 다음과 같습니다.
<?php
$insert_id = $stmt->insert_id;
echo "그냥 삽입ID예: " . $insert_id;
?>
이 속성은 삽입 작업이 수행되고 테이블에 자동 성장 필드가있는 경우에만 의미가 있습니다.
다음은 mysqli_stmt :: $ insert_id 로 새로 삽입 된 ID를 얻는 방법을 보여주는 완전한 예입니다.
<?php
$mysqli = new mysqli("gitbox.net", "username", "password", "database");
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
$stmt = $mysqli->prepare("INSERT INTO users (username, email) VALUES (?, ?)");
if (!$stmt) {
die("전처리가 실패했습니다: " . $mysqli->error);
}
$username = "bob";
$email = "[email protected]";
$stmt->bind_param("ss", $username, $email);
if ($stmt->execute()) {
$insert_id = $stmt->insert_id;
echo "성공적으로 삽입하십시오!새로운 기록ID예: " . $insert_id;
} else {
echo "삽입 실패: " . $stmt->error;
}
$stmt->close();
$mysqli->close();
?>
테이블에 auto_increment를 설정하는 필드가 있는지 확인하십시오. 그렇지 않으면 $ insert_id가 0을 반환합니다.
execute ()가 실행될 때마다 $ insert_id는 현재 삽입 된 ID로 업데이트됩니다.
여러 레코드가 배치에 삽입되면 첫 번째 레코드의 자체 증가 ID 만 얻을 수 있으며 삽입 횟수에 따라 후속 ID를 계산해야합니다.
또한 $ mysqli-> insert_id (명령문이 실행되는 mysqli connection 객체에서)에서도 얻을 수 있지만 컨텍스트가 일관되도록 $ stmt-> insert_id를 사용하는 것이 좋습니다.
mysqli_stmt :: $ insert_id를 사용하여 최신 삽입 작업에 의해 생성 된 자동 성장 ID를 쉽고 정확하게 얻으십시오. 전처리 명세서를 결합하면 데이터 보안 및 코드 표준이 향상 될 수 있습니다. 이 속성을 올바르게 사용하면 데이터베이스 작업의 일관된 논리 및 데이터 무결성을 달성하는 데 도움이 될 수 있습니다.