データベースに挿入された行のIDを取得したいのですが、これを行う方法がわかりません。PHP、MySQLi、Prepared Statementを使用して、挿入された行のIDを返す方法は?
SQL句RETURNING id
を使用して復帰しようとしましたが、動作しませんでした。
行の挿入後にIDを返す方法はありますか?
データベースに挿入された行のIDを取得したいのですが、これを行う方法がわかりません。PHP、MySQLi、Prepared Statementを使用して、挿入された行のIDを返す方法は?
SQL句RETURNING id
を使用して復帰しようとしましたが、動作しませんでした。
行の挿入後にIDを返す方法はありますか?
PreparedStatement
でメソッドを呼び出した後、挿入行のIDはinsert_id
属性になります。それだけを読んでください。
$pstm->execute();
$pstm->insert_id;
$newid = mysqli_insert_id($mysqli_db);
$mysqli_db
は、あなたのmysqliデータベース接続です。私が知っている限り、行を挿入した方法(準備されたステートメントまたは直接INSERT INTO
)には問題はありません。 mysqli_insert_id()
は、このdb接続を使用して最後に挿入された行のIDを返す必要があります。
別のクエリをSELECT LAST_INSERT_ID();
のようにすることもできます。
このメソッドは、トランザクションでも機能することに言及する価値があります(それほど明白ではありません)。 – Itako
これは 'PreparedStatement'でも使えますか? '$ pstm-> execute();'の後に 'insert_id'属性にid:' $ mysqli-> insert_id; ' –
がありますが、それぞれに対応する一意のIDが返されます実行? [documentation](http://php.net/manual/en/mysqli-stmt.insert-id.php#102299)の一番のコメントは、mysqli_stmt-> insert_id'の代わりに 'mysqli_connection-> insert_id'を使うべきだと言っていますあなたが同じ準備済みの文を何度も実行する場合。これが正しいかどうかはあなたが知っているかもしれないと思った。 – Cheslab