問題タブ [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 - mysql_insert_id を使用して大量のデータを挿入する
PHP と MySQL を使用して、データ テーブルとそれに関連付けられた多対多テーブルにデータを挿入したいと考えています。データ テーブルの自動インクリメント プライマリ ID は、多対多テーブルで使用されます。したがって、多対多テーブルに挿入するデータ テーブルの ID を知る必要があります。
私の現在の考えでは、これにアプローチする最善の方法は、最初にデータ テーブルに挿入し、次に mysql_insert_id() を使用して多対多テーブルに挿入するループを使用することです。これが最善の方法ですか?
さらに、その関数で間違った ID を取得することを心配する必要がありますか? 多くのワーカーがこのデータ スクリプトを同時に使用することになるため、あるワーカー クエリからの ID が、別のワーカーの mysql_insert_id() への呼び出しで返されることになるのではないかと懸念しています。それは正当な懸念事項ですか? もしそうなら、どうすれば対処できますか?
php - php/mysql/javascript - ページがロードされた後、GET 変数を全体 (URL を含む) に設定する必要があります。
これは説明するのが非常に難しい問題です。
全体像: ajax 化されたダイアログがページに送信され、新しいコンテンツ セット レコードが作成されます。コンテンツ セット レコードの作成後、この新しく作成されたコンテンツ セットは選択されたコンテンツ セットである必要があり、作成または変更されたすべてのコンテンツには、新しく作成されたコンテンツ セット ID が添付されている必要があります。コンテンツ セット ID は、ページの読み込み中に MySQL の自動インクリメント フィールドを使用して作成されます。
問題の詳細: ajax を使用してコンテンツ セット作成ダイアログを表示するページがあります。ダイアログは複数の場所から呼び出される可能性があるため、空白の URL に送信されます。ダイアログが呼び出された URL に送信されるようにします。ダイアログが呼び出し元のページに送信された後、ページ上の PHP によって、MySQL データベースにコンテンツ セット レコードが作成されます。新しく作成されたレコードの挿入 ID を GET 変数を使用してページからページに渡す必要があります (既にこの方法でページネーション変数を渡しているため、最も簡単な方法です) が、挿入 ID を取得する前にページをロードする必要があるため、 GET 変数が存在する必要があるすべての場所を設定する方法 (ページ リンク、php $_GET 変数、URL)。
考慮すべき事項:
- 新しく作成された挿入 ID をセッション変数を介して渡しますが、誰かが [戻る] ボタンを押したときに問題が発生し、セッション変数が以前の値に戻らない場合を除きます。
- Javascript と PHP を使用して、この挿入 ID 変数が使用されるさまざまな場所を変更しますが、空の URL に送信される別の ajaxed ダイアログをプルする場合を除き、空の URL にはもちろん新しい GET 変数がありません。また、これは非常にずさんなようで、維持するのは悪夢です。
- レコードの作成後、新しい GET 変数を追加した後、同じページにリダイレクトしますが、POST 変数を渡すことができないため、エラー メッセージと成功メッセージがお尻の完全な苦痛になります。GET vars は $_SERVER['QUERY_STRING'] と空のリンクを使用してページ間で渡されるため、表示するエラー/成功メッセージをページに伝えるために GET vars を使用したくありません。
- 新しく作成したコンテンツ セットを作成後に自動ロードすることができませんでした。これにより、ユーザーは、新しく作成されたコンテンツ セット自体を読み込むという余分な手順を実行することになりますが、これは避けたいと思います。
これに対するエレガントな解決策はありますか?この問題は、ウェブサイトの設定方法が原因で非常にユニークな場合がありますが、誰かが同様の問題に対処している必要があります. この 1 つの小さな問題を解決するために、サイトのデザインをあまり変更する必要がないことを願っています。どんなアイデアでも大歓迎です。
php - mysql_insert_id を呼び出すと警告が表示される
こんにちは、挿入 ID を取得しようとすると、この警告が表示されます
警告: mysql_insert_id(): 指定された引数は有効な MySQL-Link リソースではありません
の
php - mysql_insert_idは、関数に配置したときに最後に挿入されたIDを返しません
mysql_insert_idは、関数内に配置したときに最後に挿入されたIDを返しません。
なぜそうならないのか、ちょっと混乱しました。
これが私のコードです:
前もって感謝します
アダム
php - 最初の挿入から次の挿入に最後の自動IDを挿入する必要があるが、2つの異なるテーブルにデータを挿入する単一のフォームを使用する
1つのテーブルにいくつかの情報を挿入するために必要なフォームがあります。次に、その挿入から自動インクリメントIDを取得し、次の挿入ステートメントで使用します。最後のIDを取得する以外は、すべて機能します。mysql_insert_id()?
php - PHP の更新後に mysql_insert_id() が機能しなくなった
ライブ Web サーバーを PHP 5.2.12 から 5.3.5 に更新する準備をしています。準備として、ライブサーバーのミラーである2番目のサーバー(「dev」サーバー)で更新を実行しました。どちらのサーバーも FreeBSD を使用しており、両方のポートを使用して PHP と MySQL をインストールしました。ライブ サーバーは MySQL 5.0.89 を使用しており、新しくアップグレードされた開発サーバーは 5.1.54 を使用しています。
次のコードは、ライブ サーバー (PHP 5.2.12/5.0.89) で期待どおりに実行され、挿入された AUTO_INCREMENT 行の値を返します。この関数は、サイト全体で使用されるデータベース クラスの一部であり、"$this->_private['cn']" はリソース リンクです。
開発サーバー (5.3.5/5.1.54) では、戻り値はゼロです。注 - null (クエリが失敗した場合に返される) ではなく、ゼロです。テーブルを見て、新しい行が実際に挿入され、自動インクリメント フィールドが適切に進んでいることを確認できます。フィールド値は現在 121288 であるため、PHP の整数範囲内に収まっています。簡単なページでクラスのコードを再作成しても、同じ結果が得られます。mysql_error() は失敗がないことを示します。エラー報告は E_ALL に設定されており、のぞき見ではありません。
ぐっ!何か案は?
php - mysql_insert_id() の括弧には何を入れますか?
次のような変数を設定してみました:$test_id = mysql_insert_id($dbc);
挿入された最後の行の ID を取得したかったからです。データベースに接続して行を挿入することはできますが、次の行 ($test_id を設定) には次のように書かれています: supplied argument is not a valid MySQL-Link resource
. 何か案は?
コードは次のとおりです。
$dbc は次のように定義されます。
$dbc = @mysqli_connect (DB_HOST, DB_USER, DB_PASS, DB_NAME);
php - 致命的なエラー: 例外 'mysqli_sql_exception' がキャッチされず、'No index used in query/prepared statement' というメッセージが表示される
次のコードを実行すると、次のエラーが表示されます
致命的なエラー: 例外 'mysqli_sql_exception' がキャッチされず、'No index used in query/prepared statement' というメッセージが表示される
そして、これは有能なスキーマです -
php - 自動インクリメントされたintを取得し、別の列に挿入する
画像名がrecordID(プラス「.png」)と同じである新しい行を作成しようとしています。recordIDは、自動インクリメントされたintです。
これは新しい記録を作ります:
..そしてこれはrecordIDを取得します:
しかし、recordIDの値を再度検索せずにimage_name列(および「.png」)に貼り付けるにはどうすればよいでしょうか。
mysql - 1 つの SQL ステートメントで 2 つのデータベース テーブルをアップサートする方法は?
次に説明する 2 つのデータベース テーブルがあります。アスタリスクは主キーを強調しています。
テーブルurl_references内の対応するエントリの存在に基づいて、投稿を挿入または更新したいと考えています。これに到達するための SQL コマンドの最適な組み合わせは何ですか? PHPで挿入または更新に関する決定を処理することは避けたいと思います。
次のシナリオでは、PHP コマンドを使用した別の段階的な動作について説明します。
シナリオ 1: 新しいエントリを挿入します。
シナリオ 2: 既存のエントリを更新します。
編集 1:投稿のIDを直接確認できないことに注意してください。主キーとしてのURLに基づいて投稿を管理 (挿入/更新) したい。