MySQL クエリでの動的テーブル名の使用
MySQL では、動的に生成されたテーブル名を使用して SQL クエリを実行すると、エラーが発生する可能性があります。これを克服するには、このようなシナリオを処理するための安全かつ効率的な方法を提供するプリペアド ステートメントを利用できます。
提供されたコード内:
SET @id := '47'; SET @table := @id+'_2013_2014_voucher'; SELECT * FROM @table; Delete FROM @table where>
MySQL がそうでないためにエラーが発生します。 「@table」はクエリ内で有効なテーブル名として直接認識されます。
これを解決するには、プリペアド ステートメントを使用して、テーブル名に基づいてクエリを動的に構築できます。次のコードは、これを実現する方法を示しています。
SET @id := '47'; SET @table := concat(@id,'_2013_2014_voucher'); set @qry1:= concat('select * from ',@table); prepare stmt from @qry1 ; execute stmt ;
MySQL では、文字列の連結に「concat」関数が使用されます。これを使用して、プリペアド ステートメント「@qry1」内のテーブル名を構築します。
プリペアド ステートメントが作成されたら、「execute stmt」コマンドを使用して実行できます。このアプローチにより、構文エラーが発生することなくテーブル名を動的に生成し、クエリを実行できます。
以上がMySQL で動的に生成されたテーブル名を使用して SQL クエリを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。