問題:
可以透過儲存在資料庫中的名稱以程式方式存取MySQL 欄位嗎?字串變量,特別適用於動態更新欄位值?
範例用例:
SET fieldname = NEW.`name`; UPDATE table SET fieldname = 1 ;
答案:
透過變數動態存取 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中文網其他相關文章!