0
実行したい100 Update/Delete
PHPで作成され、MySQLストアドプロシージャに送信される動的クエリ。MySQLの複数の動的クエリ
現在、私は
CREATE PROCEDURE `updateBill`(IN `queryIs` VARCHAR(10000))
BEGIN
SET @t1 = queryIs;
PREPARE stmt3 FROM @t1;
EXECUTE stmt3;
DEALLOCATE PREPARE stmt3;
END
のように、このコードでストアドプロシージャで、単一の動的なクエリを実行することができます。しかし、これは;
で終了し、単一のクエリを実行することができます。しかし、私は、約100動的照会を持っており、
update abc set a=1, b=0 where c=5;
update abc set a=7, b=3 where c=6;
delete from abc where c = 3;
update abc set a=9, b=2 where c=8;
update abc set a=2, b=1 where c=12;
delete from abc where c = 10;
上記のクエリのすべてのようにそれらを実行したいPHPは、クライアントのデータから送信されたデータを作られています。私はすぐにサーバーとの接続を作成し、上記のクエリを1つずつ実行したくないですが、私はちょうどストアドプロシージャのパラメータで単一の文字列として上記のクエリを送信し、それから動的クエリを作成し、上記のすべてを実行します。
もちろん、パラメータをたとえば';'(または長さを含む2番目のパラメータを追加すると、 '; ''を含む文字列と実際の区切り文字を区別しやすくなります)、ループでそれらを実行しやすくなります。一方、そうする理由はまったくありません。ちょうど接続を開き、phpから問い合わせを一つずつ(または準備して)実行してください。実際には動的SQLを使用するよりも速く、より多くのことができますし、それ以外の場合はまったく同じことができます。 (それがあなたのやり方でそれを最適化できるなら、既に実装されているでしょう)。 – Solarflare
また、PHPで複数のクエリを使用することもできます。一度に送信したい場合は、ストアドプロシージャではなく、文字列全体を1つのクエリ呼び出しで呼び出します。それは速くはありませんが、あなたのために簡単になるかもしれません(あなたの考えの背後にある理由は正確にはわかりません)。 – Solarflare