web-dev-qa-db-ja.com

PHP、MySQLi、Prepared Statementを使用して、挿入された行のIDを返す方法は?

データベースに挿入された行のIDを取得したいのですが、これを行う方法がわかりません。

SQL句RETURNING idを使用して返そうとしましたが、動作しません。

行の挿入後にIDを返すにはどうすればよいですか?

36
Renato Dinhani

PreparedStatementexecute()メソッドを呼び出した後、挿入行のIDはinsert_id属性。読むだけです。

$pstm->execute();
$pstm->insert_id;
78
Renato Dinhani
_$newid = mysqli_insert_id($mysqli_db);
_

_$mysqli_db_はmysqliデータベース接続です。私が知る限り、どの方法で行を挿入したかは関係ありません(準備済みステートメントまたは直接_INSERT INTO_)。 mysqli_insert_id()は、このdb接続を使用して最後に挿入された行のIDを返す必要があります。

別の方法は、SELECT LAST_INSERT_ID();のような別のクエリを作成することです。

6
Marco

これは誤りです。使用する必要があります。

$stmt = $db->prepare("SQL Query");
$stmt->execute();
$id = $db->lastInsertId();
3
JrBriones