أعد PHP الخلية البيانات
البيانات المعدة لمنع حقن الخلية مفيد جدا.
البيانات المعدة والمعلمات المربوطة
البيانات المعدة لتنفيذ عدد وافر من عبارة SQL نفسه، وتنفذ بشكل أكثر كفاءة.
أعمال البيانات المعدة كما يلي:
المعالجة: إنشاء قالب بيان SQL إرسالها إلى قاعدة البيانات. قيمة المعلمة محفوظة "؟" مارك. على سبيل المثال:
INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
تحليل قاعدة البيانات، ترجمة، تنفيذ مزود بيانات قالب أمثلية الاستعلام، ويخزن النتيجة ليست الانتاج.
التنفيذ: وأخيرا، فإن قيم المعلمات التي تم تمريرها إلى تطبيق ملزم ( "؟" علامة)، قاعدة بيانات ينفذ البيانات. التطبيقات التي يمكن تشغيلها عدة مرات، إذا كانت قيمة المعلمة ليست هي نفسها.
بالمقارنة مع التنفيذ المباشر من البيانات SQL، بيان أعد اثنين من المزايا الرئيسية:
البيانات المعدة يقلل بشكل كبير من الوقت التحليل، إلا استعلام (على الرغم من أن يتم تنفيذ البيانات).
المعلمات ملزمة للحد من عرض النطاق الترددي الخادم، ما عليك سوى إرسال استعلام المعلمة بدلا من العبارة بالكامل.
بيانات معدة ضد حقن SQL مفيد جدا، لأنه بعد استخدام بروتوكولات مختلفة لإرسال القيم المعلمة لضمان شرعية من البيانات.
أعد MySQLi البيانات
يستخدم المثال التالي MySQLi في بيان معد سلفا، وربط المعلمات المقابلة:
الأمثلة (MySQLi استخدام البيانات المعدة)
$ الخادم = "مضيف".
$ اسم المستخدم = "اسم المستخدم".
$ كلمة المرور = "كلمة المرور".
$ DBNAME = "myDB".
// خلق اتصال
$ كونيتيكت = mysqli الجديد ($ SERVERNAME، $ اسم المستخدم، كلمة المرور $، $ DBNAME)؛
// اختبار الاتصال
إذا ($ conn-> connect_error) {
يموت ( "فشل الاتصال:" $ conn-> connect_error)؛
}
// المعالجة وملزمة
$ Stmt = $ conn-> باعداد ( "INSERT INTO MyGuests (الاسم الأول، اسم العائلة، البريد الإلكتروني) VALUES (،،) ؟؟؟")؛
$ Stmt-> bind_param ( "نظام الضمان الاجتماعي"، $ الاسم الأول، اسم العائلة $، $ البريد الإلكتروني).
// تعيين المعلمات وأداء
$ الاسم الأول = "جون".
$ اسم العائلة = "دو".
$ البريد الإلكتروني = "[email protected]".
$ Stmt-> تنفيذ ()؛
$ الاسم الأول = "ماري".
$ اسم العائلة = "مو".
$ البريد الإلكتروني = "[email protected]".
$ Stmt-> تنفيذ ()؛
$ الاسم الأول = "جولي".
$ اسم العائلة = "دولي".
$ البريد الإلكتروني = "[email protected]".
$ Stmt-> تنفيذ ()؛
صدى "يتم إدخال السجل الجديد بنجاح".
$ Stmt-> قريب ()؛
$ Conn-> قريب ()؛
؟>
تحليل كل سطر من التعليمات البرمجية في الأمثلة التالية:
في عبارات SQL، ونحن نستخدم علامة الاستفهام (؟)، ونحن هنا يمكن أن يحل محل علامة الاستفهام عدد صحيح، سلسلة، مزدوجة الدقة الفاصلة العائمة، والقيم المنطقية.
بعد ذلك، دعونا نلقي نظرة على bind_param () وظيفة:
المعلمات SQL وظيفة مأزق، ونقول للقيمة المعلمة قاعدة البيانات. "نظام الضمان الاجتماعي" أنواع معالجة البيانات عمود معلمة للمعلمات المتبقية. الصورة الشخصية يحكي قاعدة بيانات أن السلسلة المعلمة.
هناك أربعة أنواع من المعلمات:
- ط - عدد صحيح (صحيح)
- د - مزدوجة (نقطة ضعف الدقة العائمة)
- الصورة - سلسلة (سلسلة)
- ب - BLOB (كائن كبير ثنائي: كائنات كبيرة ثنائية)
ومطلوب من كل معلمة لتحديد نوع.
المعلمة نوع البيانات يحكي قاعدة البيانات، يمكنك تقليل مخاطر حقن SQL.
ملاحظة: إذا كنت ترغب في إدراج بيانات إضافية (مدخلات المستخدم)، والتحقق من البيانات مهم جدا. |
أعدت شركة تنمية نفط عمان في البيانات
الأمثلة التالية نستخدم البيانات المعدة في شركة تنمية نفط عمان والمعلمات ملزم:
الأمثلة (شركة تنمية نفط عمان باستخدام بيانات معدة)
$ الخادم = "مضيف".
$ اسم المستخدم = "اسم المستخدم".
$ كلمة المرور = "كلمة المرور".
$ DBNAME = "myDBPDO".
محاولة {
$ كونيتيكت = الجديدة شركة تنمية نفط عمان ( "ك: المضيف = $ SERVERNAME، DBNAME = $ DBNAME"، $ اسم المستخدم، كلمة المرور $)؛
// تعيين استثناء وضع خطأ شركة تنمية نفط عمان
$ Conn-> على SetAttribute (شركة تنمية نفط عمان :: ATTR_ERRMODE، شركة تنمية نفط عمان :: ERRMODE_EXCEPTION)؛
// المعلمات ربط المعالجة وSQL
$ Stmt = $ conn-> إعداد ( "INSERT INTO MyGuests (الاسم الأول، اسم العائلة، البريد الإلكتروني)
VALUES (: الاسم الأول ،: اسم العائلة ،: البريد الإلكتروني) ")؛
$ Stmt-> bindParam ( ': الاسم الأول، الاسم الأول $)؛
$ Stmt-> bindParam ( ': اسم العائلة، اسم العائلة $)؛
$ Stmt-> bindParam ( ': البريد الإلكتروني، البريد الإلكتروني $)؛
// إدراج صف واحد
$ الاسم الأول = "جون".
$ اسم العائلة = "دو".
$ البريد الإلكتروني = "[email protected]".
$ Stmt-> تنفيذ ()؛
// إدراج صف آخر
$ الاسم الأول = "ماري".
$ اسم العائلة = "مو".
$ البريد الإلكتروني = "[email protected]".
$ Stmt-> تنفيذ ()؛
// إدراج صف آخر
$ الاسم الأول = "جولي".
$ اسم العائلة = "دولي".
$ البريد الإلكتروني = "[email protected]".
$ Stmt-> تنفيذ ()؛
صدى "يتم إدخال السجل الجديد بنجاح".
}
الصيد (PDOException $ ه)
{
.. صدى $ SQL "<BR>" $ ه> getMessage ()؛
}
$ كونيتيكت = فارغة؛
؟>