問題:
可以根據變數?
背景:
在某些場景下,例如使用觸發器時,可能需要動態更新名稱事先未知的欄位。
程式碼範例:
SET fieldname = NEW.`name`; UPDATE table SET fieldname = 1 ;
答案:
在 MySQL 中,無法直接從變數存取欄位名稱。但是,有兩種方法可以滿足此需求:
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中文網其他相關文章!