ใน Joomla นั้น ถ้าจะเขียนการติดต่อเชื่อมฐานข้อมูล มีวิธีการง่ายๆดังนี้
1. Connect Database
ให้ใช้คำสั่ง
$db =& JFactory::getDBO();ถ้าเทียบกับ PHP แล้วก็คือคำสั่ง
$con = mysql_connect("localhost","root","password");นั้นเอง
2. Code SQL
ใน Joomla นั้นถ้าจะใช้คำสั่ง SQL ก็ คล้ายๆกับ PHP แต่จะแตกต่างตรงที่ ชื่อ ฟิลด์ กับ ข้อมูล นั้นจะอ้างต่างกัน
ชื่อฟิลด์จะต้องเป็น
$db->nameQuote('ชื่อฟิลด์')ส่วน ข้อมูลจะต้องเป็น
$db->quote('ข้อมูล')
ตัวอย่าง วิธีการใช้งาน
$query = " SELECT * FROM ".$db->nameQuote('#__example_table')." WHERE ".$db->nameQuote('id')." = ".$db->quote('999999')."; ";
ข้อควรระวัง ควรระวังเรื่องการเชื่อมคำเช่น . และ "" ให้ดี อย่าให้พลาด
3.setQuery($query)
ก็ตามชื่อเลย เป็นการ set query ที่เราเขียนคำสั่ง sql เอาไว้ เมื่อจะนำเอาไปใช้ให้ทำการ set query ก่อน เป็นการกรองคำที่มีผลต่อ SQL เพื่อไม่ให้ SQL โดน Injection ทำให้เพิ่มความปลอดภัยกับระบบของเรามากขึ้น
ตัวอย่าง
$db->setQuery($query);
4.query()
เมื่อทำการ setQuery เสร็จแล้วก็ให้ใช้คำสั่ง query() เลยเพื่อเป็นการ result ข้อมูลตามที่เราได้เขียนไว้
ตัวอย่าง
$db->query();
5.insertid()
เป็นการเลือกเอาค่า Auto ID เวลาที่เรา ทำการ Add ข้อมูลไปล่าสุด ซึ่งอาจจะเอาค่าไอดีนี้ไปทำอะไรต่ออย่างอื่นได้
ตัวอย่าง
$user_id = $db->insertid();
6.loadRow() / loadRowList()
คือการ โหลด แถวข้อมูลทั้งหมดใน ตารางนั้นๆ *ถ้าใช้ loadRowList() ข้อมูลจะออกมาทุกแถว แต่ถ้าไม่มีคำว่า List ข้อมูลจะออกมาแค่แถวเดียว
ตัวอย่าง
id | name | username | |
---|---|---|---|
1 | John Smith | johnsmith@domain.example | johnsmith |
2 | Magda Hellman | magda_h@domain.example | magdah |
3 | Yvonne de Gaulle | ydg@domain.example | ydegaulle |
. . . $db->setQuery($query); $row = $db->loadRow(); print_r($row);
ผลที่ได้จะเป็น ตัวแปร Array ซึ่ง สามารถจะเอาไปใช้ได้เลยโดยอ้าง index เป็นเลขแถว
Array ( [0] => 1 [1] => John Smith [2] => johnsmith@domain.example [3] => johnsmith )
คือการโหลด คอลัม ต่างๆใน ตารางนั้นๆ ซึ่งถ้าใช้ loadObjectList() จะเป็นการเอาทุกข้อมูลใน คอลัมที่เราอ้างใน Index ของ Array
ตัวอย่าง
id | name | username | |
---|---|---|---|
1 | John Smith | johnsmith@domain.example | johnsmith |
2 | Magda Hellman | magda_h@domain.example | magdah |
3 | Yvonne de Gaulle | ydg@domain.example | ydegaulle |
. . . $db->setQuery($query); $row = $db->loadObjectList(); print_r($row);
Array ( [0] => Array ( [id] => 1 [name] => John Smith [email] => johnsmith@domain.example [username] => johnsmith ) [1] => Array ( [id] => 2 [name] => Magda Hellman [email] => magda_h@domain.example [username] => magdah ) [2] => Array ( [id] => 3 [name] => Yvonne de Gaulle [email] => ydg@domain.example [username] => ydegaulle ) )นี้เป็นผลลัพท์จากการใช้ loadObjectList(); จึงได้ ข้อมูลทั้งหมดออกมา แต่ถ้า ไม่มีคำว่า List จะออกมาแค่ข้อมูลเดียว
นี้เป็นแค่ข้อมูลบางส่วน ถ้าใครต้องการศึกษาเพิ่มเติม สามารถเข้าไปดูได้ที่ http://docs.joomla.org/Accessing_the_database_using_JDatabase
ซึ่งเป็นข้อมูลภาษาอังกฤษ สามารถดูได้ละเอียดกว่านะครับ