مشاركة مميزة

اقرأ هنا قبل أي شئ

إذا أعجبتك مواضيع هذه المدونة ادعمنا بما يلي : الاشتراك في المدونة عن طريق زر الاشتراك بالأعلى الاشتراك في القائمة البريدية للمدونة...

اشترك عبر البريد الالكتروني

الأربعاء، 31 أغسطس، 2016

التحول إلى دوال mySql المطورة .. MySqli ضرورة لا تحتمل التأخير


سواء كنت مطور ويب بلغة PHP & MySql ولك عدة تطبيقات أو مواقع ، أو مسؤول في شركة أو وزارة ولديك فريق مبرمجين ومطورين يجب عليك أن تأخذ هذا الموضوع بجدية


بي اتش بي أعلنت التحول إلى دوال بي اتش بي المطورة الخاصة بقواعد البيانات MySql وأضافت حرف الآي إلى الدوال الجديدة للتمييز لتصبح اسمها  MySql

وإليك موجز عن أهم النقاط التي ذكرت في بيان الفرق بين الدوال في الحالتين وأسباب إيقاف دعم الدوال القديمة من موقع php.net

  • توقف تطوير MySql  من قبل المنظمة php.net 
  • أهملت رسميا مع اعتماد النسخة PHP 5.5 (نزلت في يونيو 2013).
  • أزيلت تماما من نسخة PHP 7.0 (نزلت في ديسمبر 2015)
  • والأسباب كثيرة من أهمها
    1. تفتقر إلى واجهة البرمجة الكانية الموجهة  OOP 
    2. لا يدعم:
      • خاصية حجب الاستعلامات غير المتزامنة asynchronous queries
      • خاصية الاستعلامات المعدة مسبقاً  Prepared statements
      • الإجراءات المخزنة Stored procedures         
      • جمل لاستعلام المتعددة Multiple Statements         
      • Transactions 
         
بالإضافة إلى النواحي الأمنية التي تغني عن استخدام العديد من دوال الحماية في الإصدارات السابقة والتي كثيراً ما يغفل عن استخدامها المبرمجون المبتدئون.

وجميع الخصائص التي ذكرت هنا أن MySql لا تدعمها متوفرة في MySqli وغيرها الكثير

مع العلم أن PHP وفرت في الجيل الجديد طريقتين للاتصال بقواعد البيانات هي :
1- MySqli
2-PDO_MYSQL

ويبقى السبب الأهم والدافع لك لإيقاف جميع مشاغلك والبدء بالعمل على التغيير هو الأمان ثم الأمان ثم الأمان.
وكذلك إذا كنت مسؤول عن فريق مطورين يحب أن توقف جميع مهامهم والطلب من عملائك الانتظار إلى حين اكتمال نقل تطبيقاتك إلى MySqli المطورة

والعمل في هذه المهمة يحتاج جهد كبير فأنت أو فريقك مطلوب منهم تعديل جميع صفحات موقعك أو تطبيقك التي تحتوى على دوال الاتصال بقواعد البيانات وإجراء التغييرات عليها حسب ما يلي :

 mysql_affected_rows -> mysqli_affected_rows($link)
mysql_close -> mysqli_close($link)
mysql_data_seek -> mysqli_data_seek( $result, $offset)
mysql_errno -> mysqli_errno( $link)
mysql_error -> mysqli_error( $link)
mysql_fetch_array -> mysqli_fetch_array( $result, $type)
mysql_fetch_assoc -> mysqli_fetch_assoc( $result)
mysql_fetch_lengths -> mysqli_fetch_lengths( $result )
mysql_fetch_object -> mysqli_fetch_object( $result, $class, $params)
mysql_fetch_row -> mysqli_fetch_row( $result)
mysql_field_seek -> mysqli_field_seek( $result, $number)
mysql_free_result -> mysqli_free_result(result)
mysql_get_client_info -> mysqli_get_client_info( $link)
mysql_get_host_info -> mysqli_get_host_info( $link)
mysql_get_proto_info -> mysqli_get_proto_info( $link)
mysql_get_server_info -> mysqli_get_server_info( $link)
mysql_info -> mysqli_info( $link)
mysql_insert_id -> mysqli_insert_id( $link)
mysql_num_rows ->  mysqli_num_rows( $result)
mysql_ping -> mysqli_ping( $link)
mysql_query -> mysqli_query( $link, $query)
mysql_real_escape_string -> mysqli_real_escape_string( $link)
mysql_select_db - > mysqli_select_db( $link, $database)
mysql_set_charset -> mysqli_set_charset( $link, $charset)
mysql_stat -> mysqli_stat( $link)
mysql_thread_id -> mysqli_thread_id( $link)

الاسطر التالية فيها أبرز التغيرات في الدوال وكيفية تعديلها ، لأهم الدوال المستخدمة في مواقع الويب.

الصيغة المتغيرة بين دوال MySqli المطورة ودوال MySql القديمة :
mysqli Function الدوال المطورة mysql Function الدوال القديمة
mysqli_connect($db_server, $db_username, $db_password, $db_name) mysql_connect($db_server, $db_username, $db_password) followed by
mysql_select_db($db_name)
mysqli_errno($db) mysql_errno() or mysql_errno($db)
mysqli_error($db) mysql_error() or mysql_error($db)
mysqli_fetch_array($result) mysql_fetch_array($result)
mysqli_fetch_assoc($result) mysql_fetch_assoc($result)
mysqli_fetch_row($result) mysql_fetch_row($result)
mysqli_insert_id($db) mysql_insert_id($db)
mysqli_num_rows($result) mysql_num_rows($result)
mysqli_query($db,$query) mysql_query($query) or
mysql_query($query,$db)
mysqli_select_db($db,$dbname) mysql_select_db($dbname)
mysqli_real_escape_string($db,$data) mysql_real_escape_string($data)
مصدر هذا الجدول
يمكنك استخدام البحث والاستبدال لكل سكر بالطريقة المشابهة للسطر التالي:
mysqli_query( by mysqli_query($db,
تمنياتي لكم بالتوفيق

المتابعون