首頁 >資料庫 >mysql教程 >當列名可變時,如何動態建立具有參數化值的 SQL 查詢?

當列名可變時,如何動態建立具有參數化值的 SQL 查詢?

Linda Hamilton
Linda Hamilton原創
2024-12-18 04:38:15711瀏覽

How Can I Dynamically Build SQL Queries with Parameterized Values When Column Names Are Variable?

由於參數限製而建立動態查詢

在執行涉及動態列名的查詢時,開發者可能會遇到列名無法參數化的限制。若要避免此問題,必須在執行時間動態建置查詢。

考慮以下非工作範例:

SqlCommand command = new SqlCommand("SELECT @slot FROM Users WHERE name=@name; ");
prikaz.Parameters.AddWithValue("name", name);
prikaz.Parameters.AddWithValue("slot", slot);

作為替代方案,將「槽」輸入列入白名單防止注入攻擊並如下建置查詢:

// TODO: verify that "slot" is an approved/expected value
SqlCommand command = new SqlCommand("SELECT [" + slot +
           "] FROM Users WHERE name=@name; ")
prikaz.Parameters.AddWithValue("name", name);

這個方法確保「@name」保持參數化,同時動態處理變數列名字。

以上是當列名可變時,如何動態建立具有參數化值的 SQL 查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn