PHPでは、MySQLデータベースを使用する場合、 MySQLI拡張機能を介してデータベースと対話できます。挿入操作を実行し、データベースに挿入されたデータの自己侵入IDを同時に取得する場合は、 mysqli :: stmt_init関数を使用してそれを実現できます。次に、 mysqli :: stmt_initを使用してこのタスクを完了する方法を詳細に説明します。
まず、データベース接続を確立する必要があります。コードのセキュリティを確保するには、 MySQLIのオブジェクト指向の方法を使用してデータベースに接続することをお勧めします。データベース接続のサンプルコードは次のとおりです。
<?php
$host = 'localhost'; // データベースホスト
$user = 'root'; // データベースのユーザー名
$password = ''; // データベースパスワード
$dbname = 'test'; // データベース名
// データベース接続を作成します
$conn = new mysqli($host, $user, $password, $dbname);
// 接続が成功しているかどうかを確認してください
if ($conn->connect_error) {
die("接続に失敗しました: " . $conn->connect_error);
}
?>
挿入操作を実行する準備をするときは、最初にSQLステートメントを記述する必要があります。 mysqli :: stmt_init関数を介して、準備されたステートメントを初期化できます。次の例では、新しいユーザーをユーザーテーブルに挿入します。
$sql = "INSERT INTO users (username, email) VALUES (?, ?)";
mysqli :: stmt_initを使用して、ステートメントオブジェクトを初期化できます。このオブジェクトを介して、パラメーターをバインドしてクエリを実行できます。
$stmt = $conn->stmt_init();
if (!$stmt->prepare($sql)) {
die("SQL 間違い: " . $stmt->error);
}
次に、SQLステートメントの実際の値をプレースホルダー( ? )にバインドする必要があります。 bind_paramメソッドを使用して、パラメーターバインディングを完了します。挿入したいユーザー名がJohndoeで、メールはJohndoe@m66.netであるとします。次のように書くことができます。
$username = 'johndoe';
$email = 'johndoe@m66.net';
// バインドパラメーター
$stmt->bind_param("ss", $username, $email);
上記のコードでは、 「SS」は2つの文字列タイプのパラメーターをバインドしたことを意味します。
挿入操作を実行した後、MySQLは、新しく挿入されたレコードの自己注入IDを自動的に生成します。このIDをINSERT_IDプロパティを介して取得できます。
if ($stmt->execute()) {
echo "新しいレコード挿入に正常に。挿入 ID のために: " . $conn->insert_id;
} else {
echo "挿入障害: " . $stmt->error;
}
ここで、 $ conn-> insert_idは、挿入されたレコードの自動侵入IDを返します。
挿入操作を実行した後、ステートメントとデータベース接続を閉じることを忘れないでください。
$stmt->close();
$conn->close();
Mysqli :: stmt_initを使用して挿入操作を実行し、自動インクリメントIDを取得する方法を示す完全なサンプルコードを以下に示します。
<?php
$host = 'localhost';
$user = 'root';
$password = '';
$dbname = 'test';
$conn = new mysqli($host, $user, $password, $dbname);
if ($conn->connect_error) {
die("接続に失敗しました: " . $conn->connect_error);
}
$sql = "INSERT INTO users (username, email) VALUES (?, ?)";
$stmt = $conn->stmt_init();
if (!$stmt->prepare($sql)) {
die("SQL 間違い: " . $stmt->error);
}
$username = 'johndoe';
$email = 'johndoe@m66.net';
$stmt->bind_param("ss", $username, $email);
if ($stmt->execute()) {
echo "新しいレコード挿入に正常に。挿入 ID のために: " . $conn->insert_id;
} else {
echo "挿入障害: " . $stmt->error;
}
$stmt->close();
$conn->close();
?>