現在の位置: ホーム> 最新記事一覧> mysqli_stmt :: $ insert_idを使用して、挿入されたデータの自動成長IDを取得するにはどうすればよいですか?

mysqli_stmt :: $ insert_idを使用して、挿入されたデータの自動成長IDを取得するにはどうすればよいですか?

gitbox 2025-06-03

データベース操作にPHPのMySQLI拡張機能を使用する場合、挿入されたばかりのデータの自動成長IDを取得することは、一般的な要件です。特に、プリプロセシングステートメント( MySQLI_STMT )を使用して挿入操作を実行した後、挿入レコードの自動インクリメントプライマリキー値を正しく取得することが特に重要です。この記事では、 mysqli_stmt :: $ insert_id属性を介してこの値を正確に取得する方法を詳細に紹介します。

1。IDの自動成長の基本原則

MySQLデータベースの一部のテーブルフィールド(通常はプライマリキー)を自動的に成長させるように設定できます(Auto_increment)。データベースは、新しいレコードが挿入されるたびに新しい一意のIDを自動的に生成します。プログラム端末は、後続の操作(更新、関連性など)を容易にするために、このIDを知る必要があります。

2。mysqli_stmt preprocessingステートメントを使用してデータを挿入します

一般に、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;
}
?>

この例では、前処理ステートメントを介して新しいユーザーデータを安全に挿入します。

3.新しく挿入された自動成長IDを取得します

MySqli_Stmtオブジェクトには$ insert_idプロパティがあり、最後の挿入操作によって生成された自動成長IDを取得するために使用できます。取得方法は次のとおりです。

 <?php
$insert_id = $stmt->insert_id;
echo "挿入するだけですIDはい: " . $insert_id;
?>

このプロパティは、挿入操作が実行され、テーブルに自動成長フィールドがある場合にのみ理にかなっていることに注意してください。

4。完了例:挿入して自己障害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();
?>

5。注意すべきこと

  • Auto_incrementを設定するフィールドがテーブルにあることを確認してください。そうしないと、 $ insert_idが0に戻ります。

  • execute ()が実行されるたびに、 $ insert_idは現在挿入されているIDに更新されます。

  • 複数のレコードがバッチに挿入されている場合、最初のレコードの自己侵入IDのみを取得でき、後続のIDは挿入の数に基づいて計算する必要があります。

  • また、 $ mysqli-> insert_id (ステートメントが実行されるmysqli接続オブジェクトで)で取得することもできますが、コンテキストが一貫していることを確認するために$ stmt-> insert_idを使用することをお勧めします。

6。概要

mysqli_stmt :: $ insert_idを使用して、最新の挿入操作によって生成された自動成長IDを簡単かつ正確に取得します。前処理ステートメントを組み合わせると、データセキュリティとコードの規範性が向上する可能性があります。このプロパティを適切に使用すると、データベース操作の一貫したロジックとデータの整合性を実現するのに役立ちます。