شرح كيفية حفظ مصفوفة داخل عمود في قاعدة بيانات MySQL

السلام عليكم،

كثيرون هنا يرغبون في حفظ مصفوفة داخل عمود في قاعدة البينات ، لكن لا يعرفون الطريقة أو لم يبحثوا عنها :)

لذلك أحضرتها لكم هنا :

في PHP هناك دالتين : serialize و unserialize

http://php.net/manual/en/fu... http://php.net/manual/en/fu...
Serialize :  Generates a storable representation of a value. 

بمعنى انه تولد طريقة ، او شكل قابل للتخزين لقيمة أو متغير معين

unserialize — Creates a PHP value from a stored representation 

عكس Serialize تقوم باستخراج القيمة الاولية لمتغير تم عمل Serialization له

لست جيدا في الشرح ، لكن أعذروني ، فقط اريد ان اساعدكم قليلا

الان سنبدأ تطبيقا عمليا

<?php
    $array = array("item1","item2","item3");
    echo serialize($array);
    ?>

الناتج سيكون عبارة عن نص أو يمكن اعتباره كنص : a:3:{i:0;s:5:"item1";i:1;s:5:"item2";i:2;s:5:"item3";} ويمكننا تخزينه في قاعدة البيانات ، الان لنقم بعكس العملية ، سنسجل متغيرا جديدا يحتوي على : a:3:{i:0;s:5:"item1";i:1;s:5:"item2";i:2;s:5:"item3";} وسنقوم بتطبيق دالة unserialize عليه وسنستخدم دالة var_dump لعرض النتائج : $string = 'a:3:{i:0;s:5:"item1";i:1;s:5:"item2";i:2;s:5:"item3";}'; echo var_dump(unserialize($string)); والنتيجة :

 array(3) {
 [0]=>
 string(5) "item1"
 [1]=>
 string(5) "item2"
 [2]=>
 string(5) "item3"
 }

شكرا لكم

إقتراح بسيط : وضع تاق

لتسهيل وضع الشفرات البرمجية :) ، آسف إن لم يكن شرحي واضحا :{

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

يمكن أيضا إستخدام json_encode و json_decode أو إستخدام نمط مخصص.

كتبت التعليق في نفس اللحظة التي كتبتها انت :)

تعليقك سبق تعليقي بدقيقة :)

شيء جميل أن تتقارب الأفكار مع الأزمان مع الردود :)

تخرب الموضوع :(

إستخدم ذر المعاينة قبل النشر

أترك سطر فارغ قبل وبعد الكود ليظهر بالتنسيق المطلوب.

إستخدام نمط json يجعل المحتوى أقل على قاعدة البيانات أو ممكن نمط http query أقل منهما .

كنت اريد جعل الدرس اما عن json_encode و json_decode أو seerialize و unserialize :)

أو ممكن نمط http query أقل منهما

لا اعرف هذا النمط ، هلا شرحت أكثر ،؟ او ارسل لي رابط letmegooglethatforyou :)

النمط المستخدم في طلبات http سواء get أو post و.......

هكذا

name=arabia&user=مبرمج+بسيط

يُمكن إستخدامه في php من خلال الدالتان http_build_query و parse_str.

بكل بساطة ابحث في موقع php.net عن json_encode و json_decode ويمكن بطريقة اخرى استخدام implode و explode لتحويل المصفوفة الى قيمة تحفظ في قاعدة البيانات ثم تحويلها مرة اخرى الى مصفوفة بعد استدعائها من قاعدة البيانات

قصدت طريقة بدون explode و Implode

لا احبها :)

$arr=array('name'=>'ahmed','age'=>25,'country'=>'eg');
echo $json=json_encode($arr);

$decoded=json_decode($json);
echo "<br>";
print_r($decoded);
echo "<br>";
echo $decoded->{'name'};

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

طبعا ! كل اضافة إفادة ;)

-1

شكرا لكم

www.dalilsohag.com

-1

تمام اخي ... بس انت لما تيجي تعمل fetch للعمود اللي متخزن في المصفوفة وتعملها unserialize بتكون string وليس array وبالتالي مش هتقدر تستخدم دوال المصفوفات معاها مثلا زي دالة in_array لان القيمة المستخرجة من قاعدة البيانات تغير نوعها من array ل string وبالتالي اي دالة من الدوال التي تعمل على المصفوفات لن تعمل مع المصفوفة المستخرجة من قاعدة البيانات