ホームページ >データベース >mysql チュートリアル >文字列変数を使用して MySQL フィールドに動的にアクセスできますか?

文字列変数を使用して MySQL フィールドに動的にアクセスできますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-19 08:23:02912ブラウズ

Can MySQL Fields Be Accessed Dynamically Using String Variables?

変数による MySQL フィールドへの動的アクセス

問題:

ファイルに格納されている名前によって 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 サイトの他の関連記事を参照してください。

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