Rumah > pangkalan data > tutorial mysql > Bagaimana cara memarameterkan SQL dalam klausa dengan bilangan argumen yang berubah -ubah?

Bagaimana cara memarameterkan SQL dalam klausa dengan bilangan argumen yang berubah -ubah?

Patricia Arquette
Lepaskan: 2025-01-25 16:32:09
asal
311 orang telah melayarinya

How to Parameterize SQL IN Clauses with a Variable Number of Arguments?

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>
Salin selepas log masuk

cmd.CommandText = "SELECT * FROM Tags WHERE Name IN (@tag0, @tag1, @tag2, @tag3)"

cmd.Parameters["@tag0"] = "ruby"

cmd.Parameters["@tag1"] = "rails"

Adalah penting untuk diperhatikan bahawa penyelesaian ini tidak menyebabkan risiko suntikan SQL kerana teks yang disuntik tidak berdasarkan input pengguna dan hanya mengandungi nilai tetap. Pengguna memasuki dengan selamat dalam parameter.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan