问题:
可以通过存储在数据库中的名称以编程方式访问 MySQL 字段吗?字符串变量,特别是用于动态更新字段值?
示例用例:
SET fieldname = NEW.`name`; UPDATE table SET fieldname = 1 ;
答案:
The通过变量动态访问 MySQL 字段的能力取决于上下文。
外部变量:
如果字段名称作为变量存储在外部应用程序中(例如, PHP),构建有效的 MySQL 语句是可能的。
内部变量:
但是,如果字段名称作为值存储在 MySQL 表中,则访问它使用标准 SQL 语法是不可行的。这是由于 MySQL 缺少评估 (eval) 函数。
准备语句技术:
作为一种解决方法,可以使用准备语句,尽管这种方法是被认为是一个hacky解决方案。其实现方式如下:
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中文网其他相关文章!