أدخل أجزاء متعددة من البيانات في MySQL باستخدام MySQLi وPDO
يمكن استخدام الدالة mysqli_multi_query() لتنفيذ عبارات SQL متعددة.
يضيف المثال التالي ثلاثة سجلات جديدة إلى جدول "MyGuests":
مثال (MySQLi - كائني التوجه)
<?php $ servername = " localhost " ; $ username = " username " ; $ password = " password " ;$كون = جديد mysqli ( $servername , $username , $ password , $ dbname ) ; لو ( $conn -> خطأ_الاتصال ) { يموت ( " فشل الاتصال: " . $conn -> Connect_error ) } ; $sql = " INSERT INTO MyGuests (الاسم الأول، اسم العائلة، البريد الإلكتروني) القيم ('John'، 'Doe'، '[email protected]')؛ " ; $sql .= " INSERT INTO MyGuests (الاسم الأول، اسم العائلة، البريد الإلكتروني) القيم ('ماري'، 'مو'، '[email protected]')؛ " ; $sql .= " INSERT INTO MyGuests (الاسم الأول، اسم العائلة، البريد الإلكتروني) القيم ('Julie'، 'Dooley'، '[email protected]') " ؛ إذا ( $conn -> multi_query ( $sql ) === TRUE ) { صدى " تم إدراج السجل الجديد بنجاح " ; آخر { صدى " خطأ: " $ sql " " <br> " $conn - > خطأ } . $conn -> إغلاق ( ) ? > | يرجى ملاحظة أنه يجب فصل كل عبارة SQL بفاصلة منقوطة. |
---|
مثال (MySQLi - موجه نحو الإجراء)
<?php $ servername = " localhost " ; $ username = " username " ; $ password = " password " ;$conn = mysqli_connect ( $servername , $username , $ password , $ dbname ) ; لو ( ! $كون ) { يموت ( " فشل
الاتصال : " . mysqli_connect_error ( ) ) } $sql = " INSERT INTO MyGuests (الاسم الأول، اسم العائلة، البريد الإلكتروني) القيم ('John'، 'Doe'، '[email protected]')؛ " ; $sql .= " INSERT INTO MyGuests (الاسم الأول، اسم العائلة، البريد الإلكتروني) القيم ('ماري'، 'مو'، '[email protected]')؛ " ; $sql .= " INSERT INTO MyGuests (الاسم الأول، اسم العائلة، البريد الإلكتروني) القيم ('Julie'، 'Dooley'، '[email protected]') " ؛ إذا ( mysqli_multi_query ( $conn , $sql ) ) { صدى " تم إدراج السجل الجديد بنجاح " ; آخر { صدى " خطأ : " $ sql " " <br> " . mysqli_إغلاق ( $conn ) ? > مثال (شركة تنمية نفط عمان)
<?php $ servername = " localhost " ؛ $ username = " username " ؛ $ dbname = " password " ؛ { $كون = جديد PDO ( " mysql:host= $servername ;dbname= $dbname " , $username , $password ) ; // اضبط وضع خطأ PDO على الاستثناء $ conn - > setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION ) ; $ conn - > beginTransaction ( ) ; $conn -> exec ( " INSERT INTO MyGuests (الاسم الأول، اسم العائلة، البريد الإلكتروني) VALUES ('John'، 'Doe'، '[email protected]') " ) ; $conn -> exec ( " INSERT INTO MyGuests (firstname ، اسم العائلة، البريد الإلكتروني) VALUES ('Mary'، 'Moe'، '[email protected]') " ) ; $conn -> exec ( " أدخل في قيم MyGuests (الاسم الأول واسم العائلة والبريد الإلكتروني) ('Julie',
' Dooley', '[email protected]') " ) // إرسال المعاملة $conn - > الالتزام ( ) ؛ " تم إدراج السجل الجديد بنجاح " ; قبض على ( PDOException $e ) { // إذا فشل التنفيذ، التراجع $conn - > التراجع ( ) ؛ $ sql " <br> " $ e - > getMessage ( ) ; $كون = فارغ ? > استخدام البيانات المعدة
يوفر ملحق mysqli طريقة ثانية لإدراج البيانات.
يمكننا إعداد البيانات وربط المعلمات.
يمكن لامتداد mysql إرسال بيانات أو استعلامات إلى قاعدة بيانات mysql بدون بيانات. يمكنك ربط المتغيرات أو "ربطها" بشكل عشوائي.
مثال (يستخدم MySQLi عبارات معدة)
<?php $ servername = " localhost " ; $ username = " username " ; $ password = " password " ;$كون = جديد mysqli ( $servername , $username , $ password , $ dbname ) ; لو ( $conn -> خطأ_الاتصال ) { يموت ( " فشل الاتصال: " . $conn -> Connect_error ) } ; آخر { $sql = " INSERT INTO MyGuests(firstname, lastname, email) VALUES(?, ?, ?) " // تهيئة كائن البيان لـ mysqli_stmt_prepare() ; $stmt = mysqli_stmt_init ( $conn ) // بيان المعالجة المسبقة لو ( mysqli_stmt_prepare ( $stmt , $sql ) ) { // ربط المعلمات mysqli_stmt_bind_param ( $stmt , ' sss ' , $firstname , $ lastname , $ email ) ; $ firstname = ' John ' ; $ lastname = ' Doe ' ; $ email = ' [email protected] ' ; @ example.com ' ; mysqli_stmt_execute ( $ stmt ) ; $ email = ' [email protected] ' ;} ?> يمكننا أن نرى أن النمطية تُستخدم لحل المشكلات في الأمثلة المذكورة أعلاه. يمكننا تحقيق قراءة وإدارة أسهل من خلال إنشاء كتل التعليمات البرمجية.
انتبه إلى ربط المعلمات. دعونا نلقي نظرة على الكود الموجود في mysqli_stmt_bind_param():
mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);
تقوم هذه الوظيفة بربط استعلام المعلمات وتمرير المعلمات إلى قاعدة البيانات. المعلمة الثانية هي "sss". توضح القائمة التالية أنواع المعلمات. يخبر الحرف s MySQL أن المعلمة عبارة عن سلسلة.
يمكن أن تكون المعلمات الأربع التالية:
ط - عدد صحيح
د - رقم النقطة العائمة مزدوج الدقة
ق - سلسلة
ب - القيمة المنطقية
يجب أن تحدد كل معلمة نوعًا لضمان أمان البيانات. يمكن أن يؤدي الحكم على النوع إلى تقليل مخاطر ثغرات حقن SQL.