由於參數限製而建立動態查詢
在執行涉及動態列名的查詢時,開發者可能會遇到列名無法參數化的限制。若要避免此問題,必須在執行時間動態建置查詢。
考慮以下非工作範例:
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中文網其他相關文章!