ホームページ >データベース >mysql チュートリアル >PREPARE と EXECUTE を使用して MySQL で動的クエリを実行するにはどうすればよいですか?

PREPARE と EXECUTE を使用して MySQL で動的クエリを実行するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-14 10:15:18770ブラウズ

How Can I Execute Dynamic Queries in MySQL Using PREPARE and EXECUTE?

MySQL での動的クエリの実行

文字列を動的クエリとして実行することは、データベース プログラミングで役立つテクニックです。 MySQL では、この機能は EXEC や EXECUTE などの直接メソッドでは使用できません。ただし、PREPARE ステートメントと EXECUTE ステートメントを使用する回避策があります。

MySQL で文字列をクエリとして実行するには、次の手順を使用できます。

  1. クエリ: PREPARE ステートメントを使用してクエリ テンプレートを定義します。テンプレートには、動的な値のプレースホルダーを含めることができます。例:
PREPARE stmt FROM 'INSERT INTO table_name (column1, column2) VALUES (?, ?)';
  1. パラメータ値の設定: 準備されたクエリを実行する前に、プレースホルダーの値を設定する必要があります。これは、SET ステートメントを使用して実行できます:
SET @value1 = 'value1';
SET @value2 = 'value2';
  1. クエリを実行します: プレースホルダーが設定されたら、EXECUTE ステートメントを使用して準備されたクエリを実行できます。ステートメント:
EXECUTE stmt USING @value1, @value2;
  1. プリペアド ステートメントの割り当てを解除する: プリペアド クエリを実行した後、DEALLOCATE PREPARE ステートメントを使用して割り当てを解除する必要があります。これにより、準備されたクエリに関連付けられたリソースが解放されます:
DEALLOCATE PREPARE stmt;

例:

次の例は、クエリを動的に実行して複数の行を挿入する方法を示しています。テーブルに変換します:

SET @queryString = (
SELECT CONCAT('INSERT INTO user_group (`group_id`,`user_id`) VALUES ', www.vals) as res FROM (
    SELECT GROUP_CONCAT(qwe.asd SEPARATOR ',') as vals FROM ( 
           SELECT CONCAT('(59,', user_id, ')') as asd FROM access WHERE residency = 9 
    ) as qwe 
) as www
);

PREPARE stmt FROM @queryString;
EXECUTE stmt;
DEALLOCATE PREPARE stmt; 
SET @asd = NULL;

この例では、ユーザー ID とグループのリストをデータベースにクエリします。 ID を取得し、動的クエリ文字列を構築してこれらの値を user_group テーブルに挿入し、動的クエリを実行します。

以上がPREPARE と EXECUTE を使用して MySQL で動的クエリを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。