2

次のコード(実際のデータを削除)があり、テーブルにレコードを正常に書き込みます。

$db = new database('db_name');
$sql='INSERT INTO table (fieldshere);';
$pds=$db->pdo->prepare($sql);
$pds->execute(array(datahere));

$_SESSION['userid'] = $db->pdo->lastInsertId();

私が抱えている問題は、前のレコード番号を返すことです。たとえば、レコード番号100を書き込んだばかりの場合は、番号99を返します。

テーブルの行番号に自動インクリメントが表示されますが、これは正常に表示されます。例:テーブルの行が現在100の場合、自動インクリメントは101(次の行の場合)を示します。

テーブルは番号0から始まりましたが、これが問題になるかどうかはまだわかりません。

テーブルには自動インクリメントが設定されたユーザーID列があり、これが必要な数です。

前の行番号を取得する理由はありますか?

どうも

4

1 に答える 1

2

postgreSQLを使用している場合は、同じ問題がここに投稿されている可能性があります: PDOで準備された挿入の後に最後の挿入IDを取得します

lastInsertId()メソッドの「name」パラメーターを指定する必要があります:「IDが返されるシーケンスオブジェクトの名前」。

于 2013-03-14T09:26:20.630 に答える