MySQL で動的テーブル選択を実行する方法
MySQL データベースにクエリを実行するとき、テーブルからデータを選択したい状況が発生することがあります。名前が変数に格納されているテーブル。これは、抽象化または動的プログラミングの目的に役立ちます。ただし、
SET @ID_1 = (SELECT ID FROM `slider` LIMIT 0,1); SET @Cat = (SELECT Category FROM `slider` LIMIT 0,1); select * from @Cat where ID = @ID_1
のような構文を使用してそのようなクエリを直接実行しようとすると、MySQL エラーが発生します。この制限を克服するには、より堅牢なアプローチが必要です。
解決策: プリペアド ステートメントの使用
テーブル名が変数に格納されている MySQL テーブルから選択するには、準備されたステートメントを利用できます。プリペアド ステートメントを使用すると、最初にクエリを準備し、次に実際の値を使用して実行することで、SQL クエリを動的に生成および実行できます。
これを実現する方法は次のとおりです。
SET @s = CONCAT('select * from ', @Cat, ' where ID = ', @ID_1); PREPARE stmt1 FROM @s; EXECUTE stmt1; DEALLOCATE PREPARE stmt1;
解決策の内訳:
プリペアド ステートメントを使用すると、変数テーブル名に基づいて SQL クエリを動的に構築および実行でき、柔軟性とエラーのない実行が保証されます。
以上がMySQL で動的に名前が付けられたテーブルからデータを選択する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。