問題タブ [mysqli-multi-query]
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 - 準備済みステートメントを使用したマルチクエリ
マルチクエリがmysqliでどのように機能するかを理解しようとしています。しかし、それを理解するのは容易ではないことを認めます。
基本的に、マルチクエリでこれらのクエリを実行するにはどうすればよいですか? このページでは、マルチクエリでの準備済みステートメントについては触れていません。
php - mysqli_multi_query は SQL 全体を 1 回のトリップでデータベースに送信しますか?
Web サーバーからデータベースへの移動の合計が 1 回だけであるという意味で、mysqli のマルチクエリが真のマルチクエリであることに真剣に疑問を抱いています。
5 ステートメントのマルチクエリを呼び出す場合、multi_query() を 1 回実行し、next_result() を 4 回実行する必要があります。
では、Web サーバーからデータベースへの 5 回のトリップではありませんか?
それに加えて、mysqli_use_result()
呼び出し ごとにデータベースへの 1 回のトリップが必要ですかmysqli_more_results()
?mysqli_store_result()
php - mysqli_multi_query とトランザクションで複数のクエリを実行する
PHP で書かれた Web アプリケーションの更新システムを開発しています。更新の過程で、一連の MySQL スクリプトを実行する必要があるかもしれません。
スクリプトを実行する基本的なプロセスは次のとおりです。
- Mysql スクリプトを検索する
- 取引を開始する
- スクリプトには複数のクエリを含めることができるため、mysqli_multi_query を使用して各スクリプトを実行します。
- すべてがうまくいけばトランザクションを COMMIT し、そうでなければ ROLLBACK します。
私のコードは次のようになります。
スクリプトの例を次に示します (デモンストレーション用)。
この場合、スクリプト 1.5.0.0 はエラーなしで実行され、スクリプト 1.5.1.0 はエラーを生成します (説明のために、列が一意であり、 = 1key
の行が既に存在するとします)。key
この場合、実行されたすべてのクエリをロールバックしたいと考えています。しかし、1.5.1.0 の最初の挿入は (正しく) データベースにありませんが、1.5.0.0 からの更新は正常に実行されました。
備考:
- 私の最初のオプションは、すべてのスクリプトからすべてのクエリを「;」で分割することでした。クエリを個別に実行します。データベースに HTML コードを挿入できる必要があるため、これはオプションではありません (例: "& nbsp;" のようなものを挿入したい場合)。
- 私はすでに StackOverflow と google を検索し、このようなソリューションに出くわしましたが、関数を使用してすべてのクエリを分割するよりも、mysqli_multi_query のようなソリューションを使用することをお勧めします。デバッグ目的でより理解しやすく、簡単です
- テストはしていませんが、すべてのスクリプトをマージして、クエリだけを実行できると思います。ただし、一度に 1 つのスクリプトを実行すると、どのスクリプトにエラーがあるかを特定できると便利です。
- テーブル エンジンは InnoDB です。
これを機能させる方法を指摘できれば幸いです。
mysql - mysql_connect() は MySQL に接続します
私はひどい状況にいます。私のPHPは、MySQLi接続コードを使用するとMySQLデータベースで動作しますが、使用してデータベースに接続しようとすると
エラーメッセージは表示されません。むしろ、ブラウザがオフラインになるか、エラー メッセージが表示されます。私はこれを2週間理解しようとしています。
私の PHP では、MySQL と mysqli の両方の行がコメント解除されています。Windows7 64ビットを使用しています。
php - 配列に対するphpmysqlioo multi_query
$color_combo値があります。これは特定のアイテムの$colorsの配列に分解されます(配列内の3つの値)。$ colorsの値は3文字の文字列コード(FGR)であり、そのコードを「フォレストグリーン」の色に一致させるルックアップテーブルがデータベースにあります...ただし、アイテムごとに3色の場合、クエリを3回実行する必要があります配列:
だから私はしようとしています:
このケースシナリオに関するドキュメントを見つけることができませんでした。他の関数を使用している可能性があります...:
私の中心的な質問は、mysqli拡張機能のベストプラクティスと、値の配列に対してクエリを実行する方法についてです。
php - mysqli_multi_queryがmysqldbに挿入されていません
私はチュートリアルや例を使用し、問題に関する他の多くの質問を調べましたが、それでも機能させることができません。私はPHPに比較的慣れておらず、PDOについてまったく理解していません。大学から提供された減価償却されたコードを取り除くために、コードをmysqlではなくmysqliに変更しましたが、この状況ではあまり役に立ちませんでした。
誰かが私のためにこの問題に光を当てることができれば、私は非常に感謝するでしょう。以下は私のコードサンプルです:
データは、これが書き込まれたフォーム(最後のフォーム)と前のフォームのセッションの両方からのものです。ただし、次のエラーも発生します。警告:mysqli_multi_query()はパラメーター1がmysqliであると想定しWarning: mysqli_close() expects parameter 1 to be mysqli
ており、過去数日間これに固執しています。前もって感謝します。
php - シンプルな MySQL の例を MySQLi オブジェクト指向スタイルに変換するには?
この単純な MySQL の例を MySQLi オブジェクト指向スタイルに変換する方法:
結果:
データベース構造SELECT * FROM fruits
:
php - mysqli multi_query の後にクエリが続く
現在、次のことを行っています。
結果をダンプするより速い方法はありますか?
私はそれらを必要とせず、次のクエリを実行したいだけですが、エラーが発生します:
コマンドが同期していません。現在、このコマンドを実行することはできません
問題は、while ($mysqli->next_result()) {;}
約2秒かかることです。これは、私が望まないことの無駄です。
より良い解決策はありますか?
php - mysqli_pingはmysqli_multi_queryを壊します
MySQLに接続する非常に長い間使用しているlnk()という素晴らしい関数があります。最近、mysqli_ping呼び出しを追加して接続を確認し、必要に応じて再接続することにしました。デーモン(24時間年中無休で実行)で問題が発生し、長期間非アクティブになった後もMySQLへの接続が失われ続けたためです。
実装後、複数のクエリで問題が発生し始めました。MySQLへの接続は、mysqli_store_resultがpingの前に来ない限り、mysqli_multi_queryの後に送信された場合、pingが送信された時点で失われます。
なぜこれが起こっているのか考えはありますか?
このような場合に接続チェックを無視するために、ライブラリに変数を追加することを提案しないでください。私はすでにそれについて考えました、そしてそれは十分ではありません。なぜこれが起こっているのか、そしてこの場合、pingが私の接続に何をするのかを正確に知る必要があります。
php - mysqli_multi_queryを使用してエラーの原因となったクエリを特定するにはどうすればよいですか?
SOの他の場所の例を使用して、「非表示」エラーをより適切にキャッチします。以下のコードはエラーをキャッチして返しますが、これを改善して、エラーが発生したクエリを報告することは可能ですか?
以下のコードでは、出力は次のようになります。
テストされているコード: