Joomla เป็นระบบจัดการเนื้อหาที่มีประสิทธิภาพที่ช่วยให้เจ้าของเว็บไซต์และนักพัฒนาสามารถสร้างและจัดการเนื้อหาเว็บได้อย่างง่ายดาย มีคุณสมบัติและฟังก์ชันการทำงานที่หลากหลายที่ช่วยให้ผู้ใช้สามารถปรับแต่งและขยายระบบให้เหมาะกับความต้องการเฉพาะของตนได้ ลักษณะที่สำคัญที่สุดประการหนึ่งของการทำงานของ Joomla คือการรวมเข้ากับฐานข้อมูล และฐานข้อมูล คือ คอลเลกชันที่มีโครงสร้างของdataที่สามารถใช้เพื่อจัดเก็บและเรียกใช้ข้อมูล ใน Joomla ฐานข้อมูลจะถูกใช้เพื่อจัดเก็บเนื้อหาทั้งหมดของเว็บไซต์ รวมถึงบทความ เมนู โปรไฟล์ผู้ใช้ และข้อมูลอื่นๆ ฐานข้อมูลยังใช้เพื่อจัดเก็บการตั้งค่าสำหรับการติดตั้ง Joomla รวมถึงรายละเอียดการเชื่อมต่อฐานข้อมูล
ใน Joomla นั้น ถ้าจะเขียนการติดต่อเชื่อมฐานข้อมูล มีวิธีการง่ายๆ ดังนี้
1. Connect Database
ในการเชื่อมต่อ Database ให้ใช้คำสั่ง
$db = Joomla\CMS\Factory::getDbo();
// หรือ
use Joomla\CMS\Factory;
$db = Factory::getDbo();
ถ้าเทียบกับ PHP แล้วก็เป็นคำสั่ง ดังนี้
$con = mysqli_connect("localhost","root","password");
2. Code SQL
ใน Joomla นั้นถ้าจะใช้คำสั่ง SQL ก็ คล้ายๆกับ PHP แต่จะแตกต่างตรงที่ ชื่อ ฟิลด์ กับ ข้อมูล นั้นจะอ้างต่างกัน
ชื่อฟิลด์จะต้องเป็น
$db->quoteName('ชื่อฟิลด์')
// หรือแบบตัวย่อ
$db->qn('ชื่อฟิลด์')
ในส่วนข้อมูลจะเขียนฟังก์ชันโค้ดดังนี้
$db->quote('ข้อมูล')
// หรือแบบย่อ
$db->q('ข้อมูล')
ตัวอย่าง วิธีการใช้งาน Code SQL
$db = Joomla\CMS\Factory::getDbo();
$query = $db->getQuery(true)
->select('*')
->from($db->qn('#__example_table'));
->where($db->qn('id') . ' = ' . $db->q(100000));
ก็ตามชื่อเลย เป็นการ set query ที่เราเขียนคำสั่ง sql เอาไว้ เมื่อจะนำเอาไปใช้ให้ทำการ set query ก่อน เป็นการกรองคำที่มีผลต่อ SQL เพื่อไม่ให้ SQL โดน Injection ทำให้เพิ่มความปลอดภัยกับระบบของเรามากขึ้น
$db->setQuery($query);
$db->query();
$user_id = $db->insertid();
id | name | username | |
---|---|---|---|
1 | John Smith | [email protected] | johnsmith |
2 | Magda Hellman | [email protected] | magdah |
3 | Yvonne de Gaulle | [email protected] | ydegaulle |
. . .
$db->setQuery($query);
$row = $db->loadRow();
print_r($row);
Array ( [0] => 1 [1] => John Smith [2] => [email protected] [3] => johnsmith )
id | name | username | |
---|---|---|---|
1 | John Smith | [email protected] | johnsmith |
2 | Magda Hellman | [email protected] | magdah |
3 | Yvonne de Gaulle | [email protected] | ydegaulle |
. . .
$db->setQuery($query);
$row = $db->loadObjectList();
print_r($row);
Array (
[0] => Array ( [id] => 1 [name] => John Smith [email] => [email protected] [username] => johnsmith )
[1] => Array ( [id] => 2 [name] => Magda Hellman [email] => [email protected] [username] => magdah )
[2] => Array ( [id] => 3 [name] => Yvonne de Gaulle [email] => [email protected] [username] => ydegaulle )
)
นี้เป็นผลลัพท์จากการใช้ loadObjectList(); จึงได้ ข้อมูลทั้งหมดออกมา แต่ถ้า ไม่มีคำว่า List จะออกมาแค่ข้อมูลเดียว