問題:
ファイルに格納されている名前によって MySQL フィールドにプログラム的にアクセスできますか?文字列変数、特にフィールドを動的に更新する場合値?
使用例:
SET fieldname = NEW.`name`; UPDATE table SET fieldname = 1 ;
答え:
変数によって MySQL フィールドに動的にアクセスする機能コンテキストによって異なります。
外部変数:
フィールド名が外部アプリケーション (PHP など) に変数として保存されている場合、有効な MySQL ステートメントを構築できます。
内部変数:
ただし、フィールド名が MySQL テーブル内の値として保存されている場合は、標準の SQL 構文を使用することは現実的ではありません。これは、MySQL に評価 (eval) 関数がないことが原因です。
プリペアド ステートメントのテクニック:
回避策として、プリペアド ステートメントを利用できますが、このアプローチは次のとおりです。ハックなソリューションと考えられています。実装方法は次のとおりです。
SELECT columnname from queries into @colname; SET @table = 'mytable'; SET @s = CONCAT('SELECT ',@colname,' FROM ', @table); PREPARE stmt FROM @s; EXECUTE stmt;
この手法には、テーブルの列名をユーザー変数 (@colname) に格納し、動的 SQL ステートメントを連結し、ステートメントを準備して実行することが含まれます。
以上が文字列変数を使用して MySQL フィールドに動的にアクセスできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。