السلام عليكم و رحمه الله تعالى و بركاته
عند تعاملك مع ال api الخاصه ب SQL statement فى Adobe air فإنك سوف تلاحظ الخاصيه parameters فى الكائن SQLStatement و هى الخاصيه التى تمكنك من إستخدام prepared statements و الكود التالى يوضح عدم إستخدامه :
var select = new air.SQLStatement();
var uid=document.getElementById(”uid”).value;
select.text=”SELECT * FROM users WHERE u-id = ‘ ” + uid +” ‘ “;
select.execute();
أما الكود التالى يوضح كيفيه إستخدام prepared statements يمكنك المقارنه بينهما
var select = new air.SQLStatement();
var uid=document.getElementById(”uid”).value;
select.text=”SELECT * FROM users WHERE u-id = @uid”;
select.parameters["@uid"] = uid;
select.execute();
لابد أنك لاحظت @uid فى جمله ال SQL فى المثال التانى و هى عباره عن حاويه للقيمه التى تحفظها الخاصيه parameter بنفس الإسم و يمكنك أيضا إستخدام علامه الإستفهام فى جمله SQL للإشاره إلى ال prepared statements كما يلى
select.text=”SELECT * FROM users WHERE u-id = ? and u-name = ?”;
select.parameters[0] = uid;
select.parameters[1] = uname;
select.execute();
فى هذه الحاله تم الإشاره إلى prepared statements فى جمله ال SQL بعلامه إستفهام ؟ و تم إعطائها قيمه من خلال خاصيه parameters و لكن فى هذه الحاله عباره عن مصفوفه مرتبه رقميا .
ما هى فوائد prepared statements ?
تمنع هجمات SQL injection حيث انها تعتبر جزء مفصول تماما عن جمله ال SQL حيث ان الجمله تعرب اولا فى محرك الترجمه الخاص ب SQL ثم يقوم بإدراج القيم ، و بما إنها تعرب الجمل أولا فإنها تعربها مره واحده فقط عندما تستخدم اكتر من مره مع قيم مختلفه و بذلك تزيد الكفاءه فى حاله استخدا جمل SQL كبيره و معقده و فى نفس الوقت يسهل عليك فهم الجمل لأنك تقوم بالإشاره إلى مصادر القيم بأسماء مفهومه .
متى أستخدم prepared statements ?
إستخدمها عند تنفيذ جمله ال SQL اكثر من مره و لكن بقيم اخرى عديده داخل loop او غيره ، ولا تستخدمها اذا كانت الجمله تستخدم مره واحد فقط
الأوسمة: adobe air, AIR, javascript, sql, sql injection