0

入力データの処理のためのループがあるページがありif...elseます。このページは、送信時に 2 回元に戻されます。つまり、[続行] というボタンがクリックされ、2 回目に [カートに追加] がクリックされたときです....今この場合、ボタン「続行」をクリックするifと、データがデータベースに挿入されるループが実行され、更新時にすべての入力データが表示され、今度は別のボタン「カートに追加」が取得されます。カートに追加をクリックすると、else条件/ループ部分に含まれるコードが実行されます。

ここで私の質問は、データが最初にIf部分的に挿入され、後で実行されるかのようです。そのため、else 部分でelse関数を使用して、部分に最後に挿入されたデータを取得できますか?mysql_insert_id()if

以下は、私が話しているコードのタイプです。

If(Button Continue is clicked)
{
  insert query for a product table......
}
else Button Add to Cart is Clicked
{
  mysql_insert_id(); to fetch last id inserted in the above above loop/condition.. 
}

最後に挿入されたIDをelse部分的に取得できますか?

4

2 に答える 2

1

私があなたのシナリオを理解していれば、いいえ。mysql_insert_id(およびその mySQL いとこ) は、現在の接続のみにLAST_INSERT_ID()有効な最後の挿入 ID を返します。つまり、次のページに切り替えると、新しい接続が確立され、機能しなくなります。insert_id()

回避策は、クエリを作成した直後に挿入 ID をセッション変数に入れることです。これにより、他のページで使用できるようになります。(ユーザーが複数のタブ/ウィンドウを開いて、一度に 2 つの予約を行う場合は注意してください。予約プロセスごとに何らかの識別子を使用するようにしてください。)

于 2010-06-04T10:30:12.063 に答える
1

他の部分で最後に挿入されたIDを取得できますか?

できません。insert_id を取得しようとする唯一の場所は、INSERT を実行した直後です。セッションにトランザクション固有のデータを保存しないでください。したがって、複数の挿入 ID があり、この情報を異なるページ間で渡す必要がある場合、レコードは単一の「マスター」レコード (ショッピング バスケットなど) を参照する必要があります。このレコードの識別子をセッションに保存しても安全です。

C.

于 2010-06-04T12:03:17.073 に答える