1. Dr.aL-jArH

    Dr.aL-jArH DeveloPer Plus

    الأنتساب:
    ‏24 أغسطس 2012
    المشاركات:
    140
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    18
    السلام عليكم ورحمة الله وبركاته


    تحديثات جديدة في 5.5 واهمها اسقاط مكتبة MySQL :

    نعم ربما هذا سوف يكون كالصدمة عليك ... هل تعرف ان function الاستعلامات mysql_query لن تعمل ! بالطبع مع باقي الاوامر سوف يظهر لك خطأ وتحذير اذا تم استعمالها في اي برمجيات
    #:"

    تم اسقاط الدعم عن مكبتة MySQL بالكامل في 5.5 بمعني اخر اصبحت Deprecated في لغة PHP

    ما الحل ؟

    كان هذا نفس السؤال في النقاش الذي تم فتحه في تقريباً 90% من كبرى شركات البرمجة للويب خلال هذه الفتره وانا ايضاً فتحته مع باقي المبرمجين في الشركة .... توصل الجميع الي خيارين

    MySQLi و PDO :

    ربما اسمين جدد على معظمكم ولكن لن يكون جديد على الكثير منكم ..... لكن سؤال حتى الذين يعرفونهم هل استعملوهم في يوم من الايام ؟ بالطبع لا

    تعريف بـMySQLi :

    هي اختصار لكلمة MySQL Improved
    وهي تعني المكتبة المتطورة من MySQL وهي تعتمد على الـObject Oriented Programming مما يجعل من برمجتك تطور هائل في عمليات ادارة قواعد البيانات بالاضافة الي خصائص جديده متطوره حقاً عن MySQL

    تعريف بـPDO :

    هي اختصار لكلمة PHP Data Objects
    وهي الادارة الداخلية للبيانات من PHP ولها ما يسمي بـDrivers يتيح لها العمل مع اكثر من نوع من قاعدة البيانات


    معني اكثر من نوع من قاعدة البيانات و Drivers في PDO :

    تخيل انك تعمل في شركة عملاقة قد تجد فيها تعدد انظمة قواعد البيانات حيث يوجد لديك سيرفرين الاول MySQL والثاني ORACLE فماذا سوف تفعل ؟ تبرمج مرتين ؟ برنامجين ؟ بالطبع الامر متعب جداً

    الحل في مكتبة PDO ..... تتيح لك الكتابة مره واحده مع استبدال الـDriver للبرنامج يعني تغير له التعريف الخاص بقاعده البيانات

    بالاسفل قائمة توضح عدد التعريفات الخاصة بقواعد البيانات المدعومة من PDO

    1. PDO_CUBRID
    2. PDO_DBLIB
    3. PDO_FIREBIRD
    4. PDO_IBM
    5. PDO_INFORMIX
    6. PDO_MYSQL
    7. PDO_OCI
    8. PDO_ODBC
    9. PDO_PGSQL
    10. PDO_SQLITE
    11. PDO_SQLSRV
    12. PDO_4D

    ---------------------- تم أقتباس هذا الجزء من الاستاذ الغالي ممدوح ماركو " كبير مبرمجين VBSEO
    #:" --------------








    الأجمل انه يمكنك اختصار البرمجه واختصار وقتك في حاجات كتير ,, وممكن تستعمل كذا نوع من انواع البرمجيات





    نبذه بسيطه عن MYSQLI




    في MySQL , لما بنحب نتصل بقاعدة بينات بتكون كدا


    كود PHP:
    <?php 

      $con 
    mysql_connect("localhost","root","1234") or die (mysql_error()); 
      
    $chose_db mysql_select_db("database_name") or die (mysql_error()); 
    ?>
    فقط كنا نتصل بالسيرفر عن طريق mysql_connect,,وهي تحتوي على ثلاث بارمترات

    ومن ثم نختار القاعده عن طريق ,,mysql_select_db


    وهي تاخذ بارمتر واحد الي هوة اسم القاعده




    أنما في MYSQLI بتكون ابسط واخف
    :{21}:


    مثال :



    كود PHP:
     <?php     $db = new mysqli("localhost""root""1234""database_name");     if($db->connect_error)     {       die('Connect Error' $db->connect_error);     } ?>

    نأتي لشرح الكود :



    احنا عملنا متغير للكائن الي اسمه db ,, تمام ؟ بعدين طلبنا mysqli ووضعنا فيها 4 باراميترات




    البارمتر الاول : اسم السيرفر الهوست الافتراضي هوة localhost
    البارمتر الثاني : اسم مستخدم القاعده
    البارمتر الثالث : باسورد اسم مستخدم قاعده البيناتات
    البارمتر الرابع : اسم قاعده البينات


    اعتقد واضحه





    زمان في قواعد البينات كان الاستعمال كدا MYSQL


    كود PHP:
    mysql_CODE

    ودي معناها اوالمقصود منها هو query او connect أو num_rows


    ف هيكون الكود كده


    كود PHP:
    mysql_query(); mysql_connect(); mysql_num_rows();

    اعتقد وضحت اكتر




    حاليا في mysqli


    كود PHP:
    تم تبديل الامر الي $db->
    هنا المتغير db , هو الي شغلنا بيه قاعدة البينات بعدها حطينا ->



    في الحاله دي بيكون زيو زي ال class ,, بالشكل ده



    كود PHP:
     <?php class datab 
        public function 
    query()     {        echo "هنا الامر";     } 


    ?>

    فلو اردنا تشغيل الكلاس
    نقوم بانشاء متغير ثم نضع يساوي ومن بعدا كلمة new ومن ثم اسم الكلاس


    كود PHP:
    $class = new datab;

    ومن ثمن لو اردنا تشغيل الداله query
    نضع اسم المتغير الي شغلنا به الكلاس ومن ثم السهم ومن بعدها اسم الكلاس


    كود PHP:
    $class->query();

    دلوقتي الفكره بقت واضحه اكتر عن استبدال كائنات ال MySQL !:"
















    ----------------------- المدخلات والاستعلامات ---------------------




    1 - الادخال


    كود PHP:
    <?php         $insert $db->query("INSERT INTO `tbl_name` ('filed1','filed2') VALUES ('value-filed1','value-filed2')");  ?>

    2 - الاستعلام من الداتابيز

    كود PHP:
     <?php         $result $db->query("select * from tbl_name");  ?>
    طيب افرض مثلا لو حبيت تعمل fetch_array :D





    هيبقي كدا


    كود PHP:
     <?php 
            $result 
    $db->query("select * from tbl_name"); // fetch_array First 
            
    $row $result->fetch_array(MYSQLI_NUM);         echo $row['0'];         echo $row['1']; 
            
    // fetch_array secnd 
            
    $row $result->fetch_array(MYSQLI_ASSOC);         echo $row['username'];         echo $row['password']; 
            
    // fetch_array Third 
            
    $row $result->fetch_array(MYSQLI_BOTH);         echo $row['0'];         echo $row['username'];

    هنا عندما نستخرج البينات من القاعده على شكل مصفوفة جميعها

    تاخذ الامر fetch_array
    عكس MySQL التي لها انواع اخرى للاستخراج

    هنا صحيح لها امر واحد هوة fetch_array ولكنها

    سوف تاخذ ثلاثة انواع للاستخراج على شكل مصفوف


    النوع الاول هو : MYSQL_NUM



    هوة يتم استخراج البينات على شكل مصفوفة ولكن عند طريقه العرض
    نعرض رقم الحقل او الترتيب 0,1,2,3,....الخ


    كود PHP:
    echo $row['0'];         echo $row['1'];

    النوع الثاني : MYSQL_ASSOC

    هنا يتم استخراج البينات على شكل مصفوفة ولكن طريقه عرضها

    على كتابة اسم الحقل Filed1,Filed2,....الخ يعني مثلا الاستعلام بأسم الحقل والتاكد ويروح للي بعده وهكذا


    كود PHP:
    echo $row['username'];         echo $row['password'];

    النوع الثالث : MYSQL_BOTH وهو قريب من استعمال MYSQL_ASSOC ,هنا يتم الاستخراج على شكل مصفوفة ولكن طريقه العرض مختلفه,, لانها بتكون عن طريق كتابه رقم الحقل واسم الحقل

    مثال :


    كود PHP:
    echo $row['0'];         echo $row['username'];

    ركز وخلي بالك ,, فوق استعملنا الحقل ووضعنا فيه يوزر نيم ,, تحت حطينا رقم الخانه واسم الخانه فقط محطيناش باسوردات )3:"




    مثلا لو حبيت تحذف شيئ من القاعده هيكون كالتالي :


    كود PHP:
    $db->query("DELETE FROM tbl_name WHERE filed='value-filed'");

    لوبصيت ع الكود شوية هتلاقي انه تم استعمال $db-> لان احنا بنستعمل mysqli وليست MySQL


    التعديل او التحديث من قاعدة البينات

    مثال :


    كود PHP:
    <?php 

       $db
    ->query("UPDATE tbl_name SET Filed='value-filed' WHERE 'filed1'='value-filed1'"); 
     
    ?>

    = تحديث tbl_name = اسم الجدول المراد التحديث فيه set field وبداخلها القيمه




    حساب عدد الحقول او الجداول عن طريق الداله num_rows وهي مسئوله عن عد الحقول والجداول
    :{21}:

    مثال :


    كود PHP:
    <?php 

       $result 
    $db->query("select * from tbl_name");    $num $result->num_rows
     
    ?>

    خلي بالك ف الكود ده احنا محطيناش متغير للكائن وبعدين حاطينا num_rows

    لاخلي بالك احنا حطينا متغير الاستعلام من القاعده الي هوة result وتنفيذه بالشكل التاني


    كود PHP:
    متغير الاستعلام ->num_rows;
    حاجه مهمه اوي لأصحاب المواقع المعتمده علي قواعد البينات وهي

    insert_id
    i:q3^:

    الداله دي بتسمح بأستخراج قيمة الحقل العشوائي او التلقائي الي هيتزرع في القاعده ,, وبيستعمل دايماً مع اوامر الادخال وطريقة استخدامه كالتالي


    كود PHP:
    $db->insert_id;

    اغلاق الاتصال عن طريق Close


    كود PHP:
    متغير الكائن->colse();



    والتطبيق هيكون كدا

    كود PHP:
    $db->close();
    مثلا الاخطاء error للأستعلام عن اخطاء قاعدة البينات

    عندما لاتم تنفيذ العمل او الامر فاننا فالحاله ديه هنحتاج نعرف نوع الخطأ علشان نقدر نعالجه *:"وهيكون تنفيذه كالتالي


    كود PHP:
    متغير الكائن->error();

    متغير الكائن = db وده المثال بالأنجليزي

    كود PHP:
    $db->error();
    البرمجيات الكائنيه احسن بكتييييير ,, علششان بتوفر عليك حلقات التكرار والملل بتاعها


    كمان mysqli ,, بتدعم انووواع كتيييييير من قواعد البينات مش نوع ولا اتنين لا دول 12 نوع وكل نوع يطول شرحه



    --------


    شرح سريع للدوال

    mysqli_connect_error () : هذه الدالة للتحقق من وجود خطأ في الاتصال و أيضا تطبع الخطأ



    mysqli_connect_errno() : نفس عمل الدالة السابقة لكن الفرق أن هذه تطبع رقم الخطأ

    mysqli_free_result() : تستخدم هذه الدالة لتحرير مقبض الاتصال و تستخدم عند تنفيذ الامر SELECT فقط

    mysqli_fetch_assoc() : تحول النتائج المستخرجة من قاعدة البيانات الى مصفوفة " تم شرحها بالأعلي "


    mysqli_fetch_row() : نفس وظيفة الدالة السابقة لكنها تطبع النتائج بواسطة ال key


    mysqli_fetch_array() :
    مزيج بين الدالتين السابقتين و ممكن نطبع بيانات المصفوفة بواسطتها اما باستخدام اسم الحقل أو باستخدام ال key او كليهما


    mysqli_num_rows() : هذه الدالة تقوم بحساب عدد أسطر أو عدد البيانات المضافة في جدول معين



    mysqli_num_fields() :
    تستخدم هذه الدالة لحساب عدد حقول سطر معين في الجدول

    mysqli_close() : هذه الدالة لاغلاق الاتصال و لها برامتر هو المقبض , مثال :

    المقبض هنا =
    $mysqli يعني لما نقولك المقبض , تلقائياً تعرف ان المقبض = $mysqli



    كود PHP:
    mysqli_close($mysqli);

    بس بصراحه ومن بعد اسئلة الخبراء كل الناس قالتلي ان POD " php objects data "

    احسن بكتير من mysqli , لان فيها اوامر كتير ومتغيرات اكتر ,, بس لو بتدور علي الاسهل يبقي استعمل mysqli لانها بتختصر كتييييير


    يعني الاستنتاج من كل هذا هو أن mysqli سهلة آمنة و قوية بشكل كافي بحيث تستحق أن نؤجل تعلم ال PDO حتى تصبح اقوي



    طيب انت دلوقتي مثلا كنت شغال علي سكريبت واستعملت فيه MySQL ,, مش هينفع مجهودك كلو يضيع

    في برنامج محرر نصي لتحويل



    لتحميل البرنامج

    [DOWNLOAD]http://www.em.com.eg/editor/epp.exe[/DOWNLOAD]




    متطلبات التشغيل Windows 7 - 8
    او توفر .NET Framework 4.5 على جهازك


    صوره توضح طريقة التحويل

    [​IMG]

    مبرمج البرنامج هو مصري وأسمه خالد ممدوح
    !!:{ ,,


    الموقع الرسمي هو شركة ايماج

    Custom Web Application Development - Web Based Application Development- Powered by em.com.eg


    تمت ,, ملحوظه : انا مازلت بتعلمها وكل ماهوصل لشيئ هنزله ,,انا تابعت شروحات احمد ماركو وجمعت شوية معلومات مقبوله الي حد ما عن mysqli ,,



    $:"​
     
  2. Al-JoKeR

    Al-JoKeR مساعد مشرف

    الأنتساب:
    ‏22 ديسمبر 2011
    المشاركات:
    133
    الإعجابات المتلقاة:
    6
    نقاط الجائزة:
    18
    الوظيفة:
    طالب علم
    الإقامة:
    الجنة ان شاء الله
    رد: تحديثات جديدة في 5.5 واهمها اسقاط مكتبة MySQL

    تسلم أخي طرح جميل

    ربي يعطيك الف عافيه

    )5:"
     
  3. Dr.aL-jArH

    Dr.aL-jArH DeveloPer Plus

    الأنتساب:
    ‏24 أغسطس 2012
    المشاركات:
    140
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    18
    رد: تحديثات جديدة في 5.5 واهمها اسقاط مكتبة MySQL

    الله يعافيك
    لاهنت على المرور &:":
     
  4. No-Security

    No-Security <span style="font-weight: bold; text-shadow: #BBBB DeveloPer Plus

    الأنتساب:
    ‏16 أكتوبر 2014
    المشاركات:
    177
    الإعجابات المتلقاة:
    5
    نقاط الجائزة:
    18
    رد: تحديثات جديدة في 5.5 واهمها اسقاط مكتبة MySQL

    مشكور اخي الغالي
     

مشاركة هذه الصفحة