อาทิตย์, กุมภาพันธ์ 05, 2555
   
Text Size
ป้ายโฆษณา

การ insert หรือ update ฐานข้อมูลโดยไม่ต้องเขียน query

( 2 Votes )

โดยปกติเรามักจะคุ้นเคยกับการ insert หรือ update ฐานข้อมูลโดยการเขียน query แบบเต็มๆ ซึ่งบางครั้งก็ค่อนข้างยุ่งยาก โดยเฉพาะเรื่องของ qoute แต่ในคราวนี้เราจะมาใช้ความสามารถของ database class ในจุมลากันโดยไม่ต้องเขียน query กันเลย น่าสนใจแล้วล่ะซี่ มาดูกันต่อเลย

database class และตัวแปร $database

database class ในจุมลานับว่าเป็น class ที่มีประโยชน์มากทีเดียวหากว่าเข้าใจและใช้อย่างถูกต้อง และ ตัวแปร $database ก็คือ object variable หรือตัวแปรแบบ object ที่ core ของ Joomla! สร้างไว้ให้เราเรียกใช้แล้วหากเราเรียกใช้ใน function ก็เพียงแต่ระบุเป็น global คือ global $database; ก็สามารถเริ่มใช้งานได้เลย และการ insert และ update ของเราในวันนี้ก็จะทำโดยใช้ method สองตัวหลักๆ ของมันคือ insertObject และ updateObject นั่นเอง โดยรายละเอียดของการใช้งาน method นี้จะคล้ายกันคือการ insert หรือ update ฐานข้อมูลโดยการดูจาก properties ของ object

boolean insertObject ( string $table, object &$object [, string $keyname [, boolean $verbose ]] )

boolean updateObject ( string $table, object &$object [, string $keyname [, boolean $updateNull ]] )

โดยที่ $table คือตารางที่เราต้องการ update หรือ insert เช่น #__hrm_employees เป็นต้น

         $object ก็คือ object ที่มี data ที่เราต้องการใช้ในการ update หรือ insert

         $keyname คือ primary key ของตารางที่ต้องการจะ update หรือ insert ซึ่งจะ update ให้เราอัฒโนมัติหลังจากการ insert

         $updateNull ถ้ามีค่าเป็น TRUE ค่าของ object ที่มีค่าเป็น NULL จะถูก update ทับค่าเดิม แต่ถ้าเป็น FALSE มันจะไม่ถูก update อันนี้สำคัญนะครับในการใช้ updateObject โดยปกติจะเป็น FALSE

ตัวอย่างจาก http://help.joomla.net 

  1. function newUser( $name, $username) {
  2.   global $database;
  3.  
  4.   $user = new stdClass;
  5.   $user->id = NULL;
  6.   $user->name = $name;
  7.   $user->username = $username;
  8.  
  9.   if (!$database->insertObject( '#__users', $user, 'id' )) {
  10.     echo $database->stderr();
  11.     return false;
  12.   }
  13.  
  14.   return $user->id;
  15. }
 
ในที่นี้คือเรามีตารางที่แต่ละ field มีชื่อตรงกับ object property ซึ่ง database class จะ insert ให้เราโดยอัตโนมัติ และในที่นี้เราก็จะเห็นประโยชน์ของการใช้ stdClass ใน PHP ด้วยเช่นกัน ในทำนองเดียวกันการ update ก็เป็นดังนี้
  1. function updateUser( $id, $name, $username) {
  2.   global $database;
  3.  
  4.   $user = new stdClass;
  5.   $user->id = $id; //filed in database ก็ชื่อ id เหมือนกัน
  6.   $user->name = $name; //เช่นกัน filed ก็ชื่อ name
  7.   $user->username = $username; //และ field ก็ชื่อ username
  8.  
  9.   if (!$database->updateObject( '#__users', $user, 'id' )) {
  10.     echo $database->stderr();
  11.     return false;
  12.   }
  13.  
  14. }
 
ในการ update ก็จะต่างออกไปคือเราต้องรู้ค่าของ id ที่จะ update เพื่อที่ database class จะสามารถนำไปสร้าง query ได้ซึ่งถ้าในดูในไฟล์ database.php ใน directory includes ก็จะเข้าใจมากขึ้นจะเห็นว่าในที่นี้เราไม่ต้องเขียน query เลยก็สามารถ update หรือ insert ได้และยังทำให้ code ของเราอ่านเข้าใจง่ายอีกด้วย นี่ล่ะคือความสามารถของ Joomla! สวัสดีครับ

JoomlaWatch Stats 1.2.8b_12-dev by Matej Koval
Restore Default Settings