質問:
variable?
Background:
トリガーを使用する場合など、一部のシナリオでは、名前が事前に不明なフィールドを動的に更新する必要がある場合があります。
コードサンプル:
SET fieldname = NEW.`name`; UPDATE table SET fieldname = 1 ;
回答:
MySQL では、変数からフィールド名に直接アクセスすることはできません。ただし、このニーズに対処するには 2 つの方法があります。
1.外部構築 (変数が外部アプリケーションにある場合):
フィールド名が PHP などの外部アプリケーションで使用できる場合、MySQL ステートメントを動的に構築できます。
例:
$fieldName = "fieldname"; $sql = "SELECT $fieldName FROM table";
2.プリペアド ステートメント (MySQL に保存された変数の場合):
フィールド名が MySQL テーブルに保存されている場合、プリペアド ステートメントを使用して目的の動作を実現できます。
コードサンプル:
SELECT columnname from queries into @colname; SET @table = 'mytable'; SET @s = CONCAT('SELECT ',@colname,' FROM ', @table); PREPARE stmt FROM @s; EXECUTE stmt;
注: 準備されたステートメントでは、変数置換と潜在的な SQL インジェクションの脆弱性を慎重に処理する必要があります。
以上がMySQL クエリでフィールド名を動的に取得して使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。