أحدث البرامج التعليمية وتطوير الشبكة
×

PHP البرنامج التعليمي

PHP الصفحة الرئيسية PHP مقدمة PHP تثبيت PHP بناء الجملة PHP المتغيرات PHP صدى / طباعة PHP أنواع البيانات PHP سلاسل PHP الثوابت PHP مشغلي PHP If...Else...Elseif PHP Switch PHP في حين حلقات PHP لحلقات PHP وظائف PHP المصفوفات PHP فرز المصفوفات PHP Superglobals

PHP معالجة

PHP شكل معالجة PHP شكل التحقق من صحة PHP شكل مطلوب PHP شكل URL/E-mail PHP شكل كامل

PHP متقدم

PHP المصفوفات متعددة PHP التاريخ و الوقت PHP تتضمن PHP ملف معالجة PHP ملف فتح / قراءة PHP ملف إنشاء / كتابة PHP ملف تحميل PHP Cookies PHP Sessions PHP مرشحات PHP Filters متقدم PHP خطأ معالجة PHP استثناء

MySQL Database

MySQL قاعدة البيانات MySQL صلة MySQL Create DB MySQL Create الطاولة MySQL Insert Data MySQL الحصول على معرف آخر MySQL إدراج متعددة MySQL Prepared MySQL Select Data MySQL Delete Data MySQL Update Data MySQL Limit Data

PHP - XML

PHP XML موزعي PHP SimpleXML Parser PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX مقدمة AJAX PHP AJAX قاعدة البيانات AJAX XML AJAX بحث حي AJAX قارئ آر إس إس AJAX صندوق الاقتراع

PHP Examples

PHP أمثلة PHP اختبار قصير PHP شهادة

PHP مرجع

PHP مجموعة PHP تقويم PHP تاريخ PHP دليل PHP خطأ PHP نظام الملفات PHP فلتر PHP FTP PHP HTTP PHP Libxml PHP بريد PHP الرياضيات PHP متفرقات PHP MySQLi PHP SimpleXML PHP خيط PHP XML PHP Zip PHP المناطق الزمنية

 

PHP القوائم المعدة


البيانات المعدة مفيدة جدا ضد حقن SQL.


تحضير بيانات ومعلمات منضم

وجاء في بيان معدة ميزة تستخدم لتنفيذ نفس (or similar) البيانات SQL مرارا وتكرارا مع كفاءة عالية.

بيانات معدة تعمل في الأساس من هذا القبيل:

  1. التحضير: يتم إنشاء قالب بيان SQL وإرسالها إلى قاعدة البيانات. يتم ترك بعض القيم غير محدد، ودعا المعلمات (labeled "?") . على سبيل المثال: INSERT INTO MyGuests VALUES(?, ?, ?)
  2. بتوزيع قاعدة البيانات، يجمع، ويؤدي إلى الحد الأمثل الاستعلام على قالب بيان SQL، ويخزن نتيجة دون تنفيذه
  3. تنفيذ: وفي وقت لاحق، وتطبيق يربط القيم إلى المعلمات، وتنفيذ قاعدة البيانات البيان. قد تنفيذ تطبيق البيان عدة مرات كما انها تريد مع قيم مختلفة

بالمقارنة مع تنفيذ عبارات SQL مباشرة، البيانات المعدة واثنين من المزايا الرئيسية:

  • البيانات المعدة يقلل من وقت التوزيع كما يتم التحضير على الاستعلام مرة واحدة فقط (although the statement is executed multiple times)
  • المعلمات ملزمة تقليل عرض النطاق الترددي لخادم ما تحتاج إليه فقط إرسال المعلمات في كل مرة، وليس الاستعلام كله
  • البيانات المعدة مفيدة جدا ضد حقن SQL، لأن قيم المعلمة، التي تنتقل في وقت لاحق باستخدام بروتوكول آخر، ليس من الضروري أن هرب بشكل صحيح. إذا لم يتم اشتقاق قالب بيان الأصلي من المدخلات الخارجية، لا يمكن أن يحدث حقن SQL.

القوائم المعدة في MySQLi

يستخدم المثال التالي البيانات المعدة والمعلمات المربوطة في MySQLi:

مثال (MySQLi with Prepared Statements)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// prepare and bind
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);

// set parameters and execute
$firstname = "John";
$lastname = "Doe";
$email = "[email protected]";
$stmt->execute();

$firstname = "Mary";
$lastname = "Moe";
$email = "[email protected]";
$stmt->execute();

$firstname = "Julie";
$lastname = "Dooley";
$email = "[email protected]";
$stmt->execute();

echo "New records created successfully";

$stmt->close();
$conn->close();
?>

خطوط الرمز إلى شرح من المثال أعلاه:

"INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)"

في SQL لدينا، وإدراج علامة استفهام (?) حيث نريد أن تكون بديلا في عدد صحيح، سلسلة، قيمة مزدوجة أو سائل.

ثم، لديها نظرة على bind_param() وظيفة:

$stmt->bind_param("sss", $firstname, $lastname, $email);

هذه الوظيفة تلزم المعلمات إلى استعلام SQL ويروي قاعدة بيانات ما هي المعلمات. في "sss" تسرد حجة أنواع البيانات التي المعلمات. الحرف الصورة يقول الخلية أن المعلمة هي سلسلة.

قد تكون وسيطة واحدة من أربعة أنواع:

  • ط - صحيح
  • د - مزدوج
  • الصورة - سلسلة
  • ب - BLOB

يجب أن لدينا واحدة من هذه لكل معلمة.

بقوله الخلية نوع البيانات يمكن توقعه، ونحن لحد من مخاطر حقن SQL.

ملاحظة: إذا أردنا أن إدراج أي بيانات من مصادر خارجية (like user input) ، من المهم جدا أن البيانات تطهير والتحقق من صحتها.


تحضير بيانات في شركة تنمية نفط عمان

يستخدم المثال التالي البيانات المعدة والمعلمات المربوطة في شركة تنمية نفط عمان:

مثال (PDO with Prepared Statements)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // prepare sql and bind parameters
    $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email)
    VALUES (:firstname, :lastname, :email)");
    $stmt->bindParam(':firstname', $firstname);
    $stmt->bindParam(':lastname', $lastname);
    $stmt->bindParam(':email', $email);

    // insert a row
    $firstname = "John";
    $lastname = "Doe";
    $email = "[email protected]";
    $stmt->execute();

    // insert another row
    $firstname = "Mary";
    $lastname = "Moe";
    $email = "[email protected]";
    $stmt->execute();

    // insert another row
    $firstname = "Julie";
    $lastname = "Dooley";
    $email = "[email protected]";
    $stmt->execute();

    echo "New records created successfully";
    }
catch(PDOException $e)
    {
    echo "Error: " . $e->getMessage();
    }
$conn = null;
?>