تمثل مواضع المعاملات في الاستعلامات المحضرة قيمًا، ولا تستخدم مباشرة بدل أسماء الجداول أو الأعمدة أو الكلمات المحجوزة. إذا أراد المستخدم اختيار عمود الفرز، فلا يكفي ربط النص الذي يحتوي اسم العمود بمعامل والتوقع أن يتحول إلى معرف داخل الاستعلام. يختلف اختيار البنية عن إدخال قيمة بيانات.
الطريقة المناسبة هي تحديد قائمة خيارات مسموحة في التطبيق، ثم تحويل اختيار المستخدم إلى اسم عمود معروف يملكه المطور. يمكن بناء جزء الفرز من هذا الاختيار المحدود، مع الاستمرار في ربط قيم البحث بمعاملات مستقلة. لا ينبغي نسخ اسم عمود خام من مدخل المستخدم إلى SQL دون تحقق.
مثال
CREATE TABLE books (
id INT PRIMARY KEY,
title VARCHAR(100),
price INT
);
PREPARE s FROM
'SELECT id, title FROM books WHERE price >= ? ORDER BY title';
SET @minimum = 10;
EXECUTE s USING @minimum;
DEALLOCATE PREPARE s;
في المثال، اسم عمود الفرز جزء ثابت من الاستعلام، بينما الحد الأدنى للسعر قيمة قابلة للربط. عند دعم أكثر من خيار فرز، نستخدم صيغًا موثوقة مماثلة لكل خيار بدل التعامل مع أسماء الأعمدة كأنها قيم عادية.
باختصار: اربط القيم بمعاملات، واختر أسماء الأعمدة من قائمة مسموحة يحددها التطبيق.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.