Rumah >pangkalan data >tutorial mysql >Bagaimana cara memarameterkan SQL dalam klausa dengan bilangan argumen yang berubah -ubah?
SAT SQL dalam klausa, berurusan dengan parameter pembolehubah
Untuk mengelakkan SQL daripada menyuntik kelemahan, parameterisasi yang mengandungi SQL dalam klausa dalam adalah penting. Walau bagaimanapun, apabila memproses parameter kuantiti yang berubah -ubah, ini mungkin menjadi rumit. Berikut adalah kaedah menyelesaikan masalah ini dalam SQL Server 2008:
Gunakan C#Parameterisasi Setiap parameter, anda boleh menggunakan kaedah berikut:
Kod ini mencipta parameter dalam kelas yang mengandungi bilangan parameter tertentu. Hasilnya ialah:
<code class="language-csharp">string[] tags = new string[] { "ruby", "rails", "scruffy", "rubyonrails" }; string cmdText = "SELECT * FROM Tags WHERE Name IN ({0})"; string[] paramNames = tags.Select( (s, i) => "@tag" + i.ToString() ).ToArray(); string inClause = string.Join(", ", paramNames); using (SqlCommand cmd = new SqlCommand(string.Format(cmdText, inClause))) { for (int i = 0; i < tags.Length; i++) { cmd.Parameters.AddWithValue(paramNames[i], tags[i]); } // ... 执行查询 ... }</code>
cmd.CommandText = "SELECT * FROM Tags WHERE Name IN (@tag0, @tag1, @tag2, @tag3)"
cmd.Parameters["@tag0"] = "ruby"
cmd.Parameters["@tag1"] = "rails"
cmd.Parameters["@tag2"] = "scruffy"
Walaupun pelan pertanyaan cache mungkin bermanfaat, mereka tidak dapat memberikan kelebihan yang signifikan untuk pertanyaan mudah seperti ini. Walau bagaimanapun, bermula dengan versi SQL Server 7, SQL Server secara automatik akan memohon pertanyaan secara automatik, menonjolkan kepentingan parameterisasi kepada keselamatan.
Atas ialah kandungan terperinci Bagaimana cara memarameterkan SQL dalam klausa dengan bilangan argumen yang berubah -ubah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!