PHP MySQLi 関数を使用して、最後に挿入された ID を取得する
このチュートリアルでは、PHP の mysqli()
関数を簡単に紹介し、それを使用して最後に挿入された id
を MySQL データベースから取得する方法を示します。
PHP mysqli()
関数
これは、mysqli
と呼ばれる MySQL
ドライバー拡張機能のバージョンであり、MySQL データベースまたはスキーマに接続するために PHP サーバー側スクリプトでよく使用されます。
まず、MySQL データベースに接続する必要があります。 connect()
または mysqli_connect()
関数は、MySQL サーバーへの接続を開くために使用されます。
関数を使用する前に、MySQL サーバーに関するパラメーターを含む mysqli()
オブジェクトを作成する必要があります。
<?php
$mysqli = new mysqli(
"host_name",
"username",
"password",
"database_name",
"port",
"socket"
);
//Checking connection
if ($mysqli -> connect_errno){
echo "Something went wrong. Failed to connect with MySQL database".
$mysqli -> connection_error;
exit();
}
else{
echo "Connected";
}
?>
上記のコードは、接続が確立されていない場合にユーザーに通知します。 それ以外の場合は、ブラウザ画面に Connected
と表示されます。
パラメータ 説明
パラメータ | 説明 |
---|---|
host_name |
ホストの名前 (例: localhost ) または IP アドレスを指定します。 |
username |
MySQL データベースの username を指定します。 |
password |
MySQL データベースの password を指定します。 |
database_name |
MySQL データベースで接続するデータベースまたはスキーマの名前を指定します。 |
port |
MySQL サーバーへの接続に使用されます。 |
socket |
socket または名前付きパイプを指定します。 |
PHP mysqli()
関数を使用して、最後に挿入された ID
を取得する
このタスクを達成するには、最後に挿入されたレコード id
を返す AUTO_INCREMENT
フィールドを持つテーブルを作成する必要があります。
AUTO_INCREMENT
があるのはなぜですか? 新しいレコードがテーブルに挿入されるたびに、auto-increment
によって一意の番号が自動的に作成されます。
多くの場合、新しいレコードが挿入されるたびに自動的に生成される 主キー
フィールドです。 AUTO_INCREMENT
列を作成する方法については、次のコードを参照してください。
CREATE TABLE table_name(
column_name1 INT AUTO_INCREMENT PRIMARY KEY,
column_name2 VARCHAR(100)
);
INT
列には整数値が格納され、AUTO_INCREMENT
は新しいレコードが挿入されるたびに列の値を自動的にインクリメントします。 最後に、PRIMARY KEY
は制約を設定し、列に一意の値のみを許可します。
2 番目の列は、文字列値を受け入れることができる VARCHAR
型です。 最後に挿入された id
を取得するために、mysqli()
は insert_id
コマンドを提供します。 以下で確認してください。
$mysql->insert_id;
このコマンドの動作を確認するには、最初に INSERT
クエリを実行し、次に insert_id
コマンドを実行して、最後に挿入された id
を確認します。
<?php
$mysqli = new mysqli(
"host_name",
"username",
"password",
"database_name",
"port",
"socket"
);
// Checking connection
if ($mysqli -> connect_errno){
echo "Something went wrong. Failed to connect with MySQL database".
$mysqli -> connection_error;
exit();
}else{
echo "Connected";
}
$sql_query = "INSERT INTO table_name (column_name2) VALUES ('value_2')";
if ($mysqli->query($sql_query) === TRUE) {
printf("Last inserted record ID %d. \n", $mysqli->insert_id);
} else {
echo "Error: ". $sql_query . "<br>" . $mysqli->error;
}
?>
上記のコードでは、$mysqli -> query()
関数が、指定されたクエリを選択したデータベースに対して実行します。 戻り値を比較します。
TRUE
の場合、printf()
関数を使用して書式設定された文字列を出力します。 それ以外の場合は、$mysqli -> error
を使用してエラーを出力します。
printf()
関数に指定したパラメーターは、指定した元の文字列の %
記号の後に挿入されます。 また、%d
記号は、挿入される値が Signed
10 進数 (負、正、またはゼロ) であることを意味します。