มีกี่วิธีในการเก็บ Array / Object ลงฐานข้อมูล
ตอนนี้อยู่ข้างนอก ล้างรถ (อีกแล้ว) ก็ว่างๆ ไม่รู้จะทำไรดี เด็กข้างๆ มันเปิดการ์ตูน ไรไม่รู้ T_T ก็เลยมาอัพเดทกันซะหน่อย
หลายๆ week หลังๆ มานี่เขียนแต่ jQuery กลัวเพื่อนๆ จะเบื่อ เลยเอา เทคนิค PHP มาอัพเดท กัน ซึ่งจริงๆ แล้วมันเป็น basic น่ะครับ ใครที่รู้อยู่แล้ว จะข้ามไปเลยก็ได้ พอดีขี้เกียจคิดไรที่ีมัน ยากๆ มีเวลาน้อย กลัวจะต้องอธิบายกันยาวไป
บทตความที่จะมาเสนอวันนี้ก็ คือวิธีเก็บข้อมูลง DB แบบ โดยจะจัดเก็บ ชุด Array หรือ Object ลงไป คล้ายๆ การเก็บข้อมูล ซึ่งการเก็บข้อมูลแบบนี้ เรามักเอาไปใช้เก็บพวก mete data ต่างๆ ที่ข้อมูลมันไม่คงที่ เช่น
ผมจะออกแบบ Database ที่เก็บเรื่อง ค่าตกแต่งใน Blog ซึ่งมันอาจจะ มีทั้ง layout, color, permission ไร เยอะแยะวุ่นวาย และใน อนาคต มันอาจจะมี field เพิ่มมาอีกแบบไม่รู้ตัว แทนที่ผมจะเก็บเป็น Colums ยาวเป็นหางว่าว ผมก็จะออกแบบ อย่างนี้แทน
meta_id | user_id | meta_name | meta_values
โดยที่ mata_values ผมจะเก็บข้อมูล เยอะแยะตาแป๊ะไก๋ ผมก็จะมีวิธีเก็บ 3 วิธี (มันน่าจะมีวิธีอื่นอีก แต่ผมนึกออกแค่นี้แหละ) ดังนี้
1. เก็บเป็น query string (array only)
$value['layout'] = 'default';
$value['color'] = 'red';
$value['other'] = 'xxx';
$values = http_build_query($value);
Decode: parse_str($values);
2. เก็บเป็น PHP Serialize (array|object)
$value['layout'] = 'default';
$value['color'] = 'red';
$value['other'] = 'xxx';
$values = serialize($value);
Decode: unserialize($values);
3. เก็บเป็น JSON Format (array|object)
$value['layout'] = 'default';
$value['color'] = 'red';
$value['other'] = 'xxx';
$values = json_encode($value);
*** สำหรับ json ถ้าไม่ได้ลง extension ไว้ ให้ใช้ lib แทนได้
เท่านี้เราก็จะสามารถเก็บข้อมูล ได้อย่าง ยืดหยุ่นและเหมาะกับงานของเรามากขึ้นแล้วล่ะ
ปล. วิธีนี้ยังเอาไปใช้ได้อีกหลายอย่างนอกจาก DB อาทิเช่น session, cookie, caching, query string ลองเอาไปเล่นกันดู
วันนี้ก็ขอ แค่นี้ละกันเพราะว่ารถใกล้จะได้แล้ว ^^
หลายๆ week หลังๆ มานี่เขียนแต่ jQuery กลัวเพื่อนๆ จะเบื่อ เลยเอา เทคนิค PHP มาอัพเดท กัน ซึ่งจริงๆ แล้วมันเป็น basic น่ะครับ ใครที่รู้อยู่แล้ว จะข้ามไปเลยก็ได้ พอดีขี้เกียจคิดไรที่ีมัน ยากๆ มีเวลาน้อย กลัวจะต้องอธิบายกันยาวไป
บทตความที่จะมาเสนอวันนี้ก็ คือวิธีเก็บข้อมูลง DB แบบ โดยจะจัดเก็บ ชุด Array หรือ Object ลงไป คล้ายๆ การเก็บข้อมูล ซึ่งการเก็บข้อมูลแบบนี้ เรามักเอาไปใช้เก็บพวก mete data ต่างๆ ที่ข้อมูลมันไม่คงที่ เช่น
ผมจะออกแบบ Database ที่เก็บเรื่อง ค่าตกแต่งใน Blog ซึ่งมันอาจจะ มีทั้ง layout, color, permission ไร เยอะแยะวุ่นวาย และใน อนาคต มันอาจจะมี field เพิ่มมาอีกแบบไม่รู้ตัว แทนที่ผมจะเก็บเป็น Colums ยาวเป็นหางว่าว ผมก็จะออกแบบ อย่างนี้แทน
meta_id | user_id | meta_name | meta_values
โดยที่ mata_values ผมจะเก็บข้อมูล เยอะแยะตาแป๊ะไก๋ ผมก็จะมีวิธีเก็บ 3 วิธี (มันน่าจะมีวิธีอื่นอีก แต่ผมนึกออกแค่นี้แหละ) ดังนี้
1. เก็บเป็น query string (array only)
$value['layout'] = 'default';
$value['color'] = 'red';
$value['other'] = 'xxx';
$values = http_build_query($value);
Decode: parse_str($values);
2. เก็บเป็น PHP Serialize (array|object)
$value['layout'] = 'default';
$value['color'] = 'red';
$value['other'] = 'xxx';
$values = serialize($value);
Decode: unserialize($values);
3. เก็บเป็น JSON Format (array|object)
$value['layout'] = 'default';
$value['color'] = 'red';
$value['other'] = 'xxx';
$values = json_encode($value);
Decode: json_decode($values);
*** สำหรับ json ถ้าไม่ได้ลง extension ไว้ ให้ใช้ lib แทนได้
เท่านี้เราก็จะสามารถเก็บข้อมูล ได้อย่าง ยืดหยุ่นและเหมาะกับงานของเรามากขึ้นแล้วล่ะ
ปล. วิธีนี้ยังเอาไปใช้ได้อีกหลายอย่างนอกจาก DB อาทิเช่น session, cookie, caching, query string ลองเอาไปเล่นกันดู
วันนี้ก็ขอ แค่นี้ละกันเพราะว่ารถใกล้จะได้แล้ว ^^

2 comments