問題タブ [mysql-insert-id]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
494 参照

php - テーブルを関連付けるための MySQL 外部キー関係と mysql_insert_id

これは、物事を機能させるための一種の概念実証ドラフト用ですが、完全にくだらないコードは望んでいません。私のデータベースでは、innoDB を使用して真の外部キー関係を取得しようとしましたが、取得できませんでした。

外部キーを使用する代わりに、挿入後に mysql_insert_id() をプルして変数として保存し、その変数を関連テーブルに入れることにしました。

これはひどいですか?すべてがうまく機能しているようで、必要に応じて ID を接続して関連付けることができます。外部キーを使用すると、私の方法よりもどのような利点がありますか (更新/削除のカスケード以外に)?

0 投票する
1 に答える
1627 参照

php - mysqli::insert_id が重複キーで間違った ID を返す

INSERT INTO ON DUPLICATE KEY UPDATE のために PHP で mysqli::insert_id を使用すると、行が更新されると、更新された行ではなく、次の自動インクリメントを取得し続けます。同じデータベースの別のテーブルでは、ON DUPLICATE KEY UPDATE を使用すると、この動作は発生しません。代わりに、更新された行の ID を取得します。しかし、何らかの理由で、作成した新しいテーブルで、存在しない次の ID を取得し続けています。どちらのテーブルも MyISAM で、自動インクリメント フィールドがあります。なぜ彼らが異なる振る舞いをするのか理解できません。

例:

何か案は?

0 投票する
2 に答える
1102 参照

php - mysql_insert_id()を$ _POSTまたはフォームアクションに渡す方法は?

IDの有無に応じてINSERTまたはUPDATEクエリが送信されるフォームページがあります(IDがある場合は、レコードを取得してフォームに事前入力するために使用されます)。いずれの場合も、処理はform.phpで行われるため、フォームのアクション自体は(action="/form.php">)です。私の問題は、form.phpが送信後にリロードすると、URLのIDが空になるため、ページが「UPDATE」モードではなく「INSERT」モードになることです。これを解決するためのベストプラクティスの方法は何ですか?

  1. これにどの演算子/条件を追加する必要がありますか'if'..。

    if (isset($_GET['ID']) && is_numeric($_GET['ID'])) {

...送信後の空のIDURLを含める(つまりform.php?ID=

また、

  1. `$ newID = mysql_insert_id(); 1をフォームのアクションに渡すにはどうすればよいですか?(私はここで成功せずにいくつかのバリエーションを試しました)

    $newID = mysql_insert_id(); ... [ をちょきちょきと切る ] ... <form method="post" action="/html/form.php?ID=<?php echo $newID; ?>">

私は隠された入力とセッションについて読んでいますが、この問題を解決するためにどちらを使用するかはまだはっきりしていません。最後に、フォームページをリロードする必要は絶対にないので、フォーム処理/データベースクエリを別のページ(たとえば、process.php)に移動して、単純化することをお勧めします。これについて何か意見はありますか?ベスト/一般的な方法は何ですか?

よろしくお願いします。

svs

0 投票する
3 に答える
124 参照

php - mysql_insert_id と私の悩みは?

行の自動インクリメント列を取得しようとしています。コードで説明しますが、基本的には、orders というテーブルに行を挿入しようとしており、その後、自動インクリメントされた数値を取得したいと考えています。これは私のPHPです。



この段階で本当にやりたいことは、自動番号をエコーアウトすることだけです。

これが私の構造です



どんな助けでも大歓迎です、ありがとう:)

0 投票する
1 に答える
188 参照

php - 最後に挿入されたレコードの値を表示する mysql_insert_id()

mysql データベースにデータを挿入する PHP スクリプトがあります。テーブルには自動インクリメント列があります。

mysql_insert_id() 関数を使用して、最後に挿入されたレコードの値を取得したいと考えています。

何らかの理由で、autoid 列の値が 300037 の場合に値 0 が返されます。

任意の支援をいただければ幸いです。ありがとうございました。

私のコードスニペットは以下の通りです:

0 投票する
4 に答える
37744 参照

php - mysql_insert_id() は 0 を返します

同じタイトルのトピックがたくさんあることは知っています。しかし、ほとんどの場合、間違った場所に挿入されたクエリです。しかし、私はそれを正しく配置したと思います。問題は、データがデータベースに挿入されても0になることです。誰かが私が間違っている可能性のある答えを知っていますか?

ここに私のコードがあります:

私はこれについてほぼ一日中頭を悩ませていたので、前もって感謝します。(そしておそらくそれは小さくてばかげたものです)

0 投票する
1 に答える
4349 参照

php - mysql_insert_id と last_insert_id の間違った動作

私はこのテーブルを持っています

a_b は一意のキーです。

そして、私はこのようなphpコードを持っています

このコードを 2 回実行すると、私の PC では結果が 1 番目になります

2位

ご覧のとおり、mysql_insert_id() はどちらも同じ値「1」を返します。挿入後の実際の ID を知りたいのですが、次の auto_increment 値は知りたくないので、これで問題ありません。

しかし、別の環境でこのコードを 2 回実行すると、次のようになります。

2位

違いがわかるように、2 回目の結果 mysql_insert_id() は last_insert_id() と同じ値を返します。

この結果は恐ろしいものですが、その理由はわかりません。私のコードは両方の環境で約 3 か月間正常に動作しましたが、これは今日まで発生しませんでした。誰か説明できますか?約 30 日前に 2 番目の環境の PHP バージョンを 5.3.8 にアップグレードしましたが、その他の変更はありません。これはバグですか?

アップデート

3 番目の mysql サーバー (5.1.38-log) に切り替えます。2 番目の挿入は int(0) array(1) { ["last_insert_id()"]=> string(1) "0" } を返します。

そのため、問題はおそらくmysqlのバージョンに関するものであることに気付きました。

最後に、テーブル定義をこれに変更しました

スクリプトも編集します

異なる mysql サーバーは同じ mysql_insert_id を返しますが、last_insert_id() は異なります

5.0.24a-コミュニティ-nt

5.0.51a-ログ

5.1.38-ログ

この動作を制御するシステム変数はありますか? 誰かがそれを知っていれば、それは嬉しいことです。解決策がない場合、私ができる唯一のことは、このような挿入を強制して、別の値でフィールドを更新することです...

0 投票する
5 に答える
7505 参照

php - 最後のIDを取得して表示

私は周りを見回してきましたが、ほとんどのチュートリアルは表示されてmysql_insert_id()いますが、同じドキュメントにあります. 列の最後のIDを取得してエコーアウトできる方法があるかどうか疑問に思っています。

これは、データベースから画像を取得し、blob を id?=1 にする私のコードです。これは画像ですが、php としてです。それは別のphpドキュメントからのアップローダーですが、別のページのその列から最後のIDを出力するために入力しています(写真ではなく統計の数値です)

それを行うことができる少しのコードは非常に役に立ちます。

0 投票する
3 に答える
3925 参照

mysql - MYSQL が存在しない場合はデータを挿入します

このコードを使用すると、何らかの理由でデータベースに挿入する際にレコードが重複します

実際の発言はこれ

DBは次のようになります

INSERT IGNORE重複を無視することになっていると思いましたか?調子はどう?

編集これが私のテーブル構造inspection_numberです。比較するための一意のインデックスとして使用しようとしていました。

0 投票する
2 に答える
2948 参照

php - MySQL UUID()プライマリキーのPHP mysql_insert_id()?

mysql_insert_id最後に挿入された UUID() 主キーを取得するためのPHP に相当するものはありますか? (私は常に0を取得します。ただし、auto_inc整数に対しては機能します)