問題タブ [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.
php - 「PDO::lastInsertId」/「mysql_insert_id」の代替
「lastInsertId」(または PDO を使用していない場合は mysql_insert_id()) を使用するのは悪いことだとよく耳にします。トリガーの場合は、INSERT が作成した最後の ID ではないものを返す可能性があるため、明らかにそうです。
代替手段は何ですか?
php - mysql_error($ con)またはmysql_insert_id($ con)を使用して挿入結果を確認しますか?
上記はテーブルに何かを挿入します。それからあなたはそれがどちらかによって成功したかどうかをチェックすることができます
また
あなたの選択と理由は何ですか?
ところで、両方を実行すると、以下はまだ$ idをフェッチしますか?まだ試していません:
mysql - MySQL テーブルにデータを入力しようとしていますが、mysqli では 10 番目のステートメントごとに挿入できません。
いくつかのチケット ID で「チケット」テーブルを初期化したいと考えています。これを行うには、120 個のチケット ID をテーブルに挿入します。ただし、10 番目のステートメントごとに、MySQL は ID が既に存在するため、挿入できないことを通知します。これが私のコードです:
コードで使用される関数は次のとおりです。
ブラウザに返されるログは次のとおりです。
チケットテーブルにTCKT00000000YDLO追加!
チケットテーブルにTCKT10000000YDLO追加!
TCKT20000000YDLOがチケットテーブルに追加!
TCKT30000000YDLOがチケットテーブルに追加!
TCKT40000000YDLOがチケットテーブルに追加!
TCKT50000000YDLOがチケットテーブルに追加!
TCKT60000000YDLOがチケットテーブルに追加!
TCKT70000000YDLOがチケットテーブルに追加!
TCKT80000000YDLOがチケットテーブルに追加!
TCKT90000000YDLOがチケットテーブルに追加!
TCKT10000000YDLOは既にあるので追加しない!
TCKT11000000YDLOがチケットテーブルに追加!
TCKT12000000YDLOがチケットテーブルに追加!
TCKT13000000YDLOがチケットテーブルに追加!
TCKT14000000YDLOがチケットテーブルに追加!
TCKT15000000YDLOがチケットテーブルに追加!
TCKT16000000YDLOがチケットテーブルに追加!
TCKT17000000YDLOがチケットテーブルに追加!
TCKT18000000YDLOがチケットテーブルに追加!
TCKT19000000YDLOがチケットテーブルに追加!
TCKT20000000YDLOは既に存在するので、追加しません!
php - Doctrine を使用した Mysql_insert_id
Doctrine を使用して更新したいテーブル (mySQL) がいくつかあります。products テーブル ID は自動インクリメントです。ここで、私がやりたいことについて簡単に説明します。
フラッシュの使用中にこれを行うにはどうすればよいですか? 通常の保存を使用することもできますが、その際に複数のトランザクションが発生します。doctrine の Mysql_insert_id バージョンを見つけようとしましたが、うまくいきませんでした。
ありがとう!
php - PHPでON DUPLICATE KEY UPDATEを使用しているときにmysql_insert_id()を取得する
mySQL だけを使用してこれに対するいくつかの回答を見つけましたが、PHP を使用して挿入/更新を処理するときに、mysql DB の最後に挿入または更新された行の ID を取得する方法を誰かが教えてくれることを望んでいました。
現在、私はこのようなものを持っています。ここで、column3 は一意のキーであり、自動インクリメントされた主キーである id 列もあります。
$my_id は INSERT では正しいですが、行を更新しているとき (ON DUPLICATE KEY UPDATE) は正しくありません。
次のようなものを使用するようにアドバイスする人々の投稿をいくつか見ました
ON DUPLICATE KEY が呼び出されたときに有効な ID 値を取得するには、有効な ID を PHPmysql_insert_id()
関数に返しますか?
php - コード内の mysql_insert_id() アプリケーションに関する質問
入力データの処理のためのループがあるページがありif...else
ます。このページは、送信時に 2 回元に戻されます。つまり、[続行] というボタンがクリックされ、2 回目に [カートに追加] がクリックされたときです....今この場合、ボタン「続行」をクリックするif
と、データがデータベースに挿入されるループが実行され、更新時にすべての入力データが表示され、今度は別のボタン「カートに追加」が取得されます。カートに追加をクリックすると、else
条件/ループ部分に含まれるコードが実行されます。
ここで私の質問は、データが最初にIf
部分的に挿入され、後で実行されるかのようです。そのため、else 部分でelse
関数を使用して、部分に最後に挿入されたデータを取得できますか?mysql_insert_id()
if
以下は、私が話しているコードのタイプです。
最後に挿入されたIDをelse
部分的に取得できますか?
php - Php、MySql - 複数の DB 接続と mysql_insert_id()
2 つのデータベース接続があり、接続の 1 つから最後に挿入された ID を取得したいと考えています。
mysql_insert_id() 関数で何かを指定する必要がありますか? 最後の既知の ID を取得しようとしていますが、これが原因だと思います。
php - PHPのmysql_insert_id()の代わりにMYSQLでSELECT MAX(id)を使用するのはどれほど悪いですか?
"SELECT MAX(id) AS id FROM TABLE"
背景:開発者が、最後に挿入された行(auto_increment列を持つテーブル)のIDを取得する必要があるときと同じように、MYSQLクエリを実行する関数を使用しているように見えるシステムで作業しています。
私はこれが恐ろしい慣行であることを知っています(同時リクエストはレコードを台無しにするため)、そして私はそれを非技術/管理チームに伝えようとしています、彼らの応答は...
私はどちらの点にも同意しませんし、私たちが計画しているよりもずっと早くこの問題に遭遇すると思います。しかし、私は、混乱したリンクが表示される前に、システムを使用する必要があるユーザーの数を計算する(またはメカニズムを理解する)ことを試みています。
それに対する数学的洞察はありますか?繰り返しますが、私はその恐ろしい慣行を知っています、私はこの状況での変数を理解したいだけです...
更新:コメントの皆さんに感謝します-私たちは正しい方向に進んでおり、コードを修正しています!
php - PHP: mysql_insert_id() の問題
PHP 関数 mysql_insert_id() は、mysql db で INSERT クエリを処理した後に結果を返さないことがありますか?
明確にするために。本番サイトで cron によって実行されるスクリプトがありました。ユーザー向けの請求書を生成するためのサイクルが含まれていました。各反復は、INSERT db クエリと、生成された請求書番号を取得するためにクエリの直後に実行される mysql_insert_id() 操作で構成されます。最後に挿入された数値を取得せずに一連の反復が実行されました。
db サーバーの負荷が高いことが原因でしょうか、それとも php コード サイトの問題に関連していないその他の理由でしょうか?
どんな助けでも大歓迎です!
php - mysql_insert_id を使用して大量のデータを挿入する
PHP と MySQL を使用して、データ テーブルとそれに関連付けられた多対多テーブルにデータを挿入したいと考えています。データ テーブルの自動インクリメント プライマリ ID は、多対多テーブルで使用されます。したがって、多対多テーブルに挿入するデータ テーブルの ID を知る必要があります。
私の現在の考えでは、これにアプローチする最善の方法は、最初にデータ テーブルに挿入し、次に mysql_insert_id() を使用して多対多テーブルに挿入するループを使用することです。これが最善の方法ですか?
さらに、その関数で間違った ID を取得することを心配する必要がありますか? 多くのワーカーがこのデータ スクリプトを同時に使用することになるため、あるワーカー クエリからの ID が、別のワーカーの mysql_insert_id() への呼び出しで返されることになるのではないかと懸念しています。それは正当な懸念事項ですか? もしそうなら、どうすれば対処できますか?