$db = JFactory::getDBO(); // 返回資料庫連接對象 (JDatabaseDriver 實例)
JFactory 為靜態工廠類,提供系統核心對象單例訪問。
<?php
$db = JFactory::getDBO();
$query = 'SELECT FirstName FROM #__tablename'; // #__ 自動替換為表前綴
$db->setQuery($query);
// 執行查詢
$results = $db->loadObjectList(); // 返回對象數組
// 輸出示例
foreach ($results as $row) {
echo $row->FirstName . ', ';
}
?>
| 方法 | 返回類型 | 適用場景 |
|---|---|---|
| loadObjectList() | 對象數組 | 多行結果,屬性訪問 |
| loadObject() | 單個對象 | 單行結果 |
| loadAssocList() | 關聯數組數組 | 鍵值對訪問 |
| loadAssoc() | 單個關聯數組 | 單行鍵值對 |
| loadColumn() | 一維數組 | 單欄位多行 |
| loadResult() | 標量 | 單值(如 COUNT(*)) |
| getNumRows() | 整數 | 影響/返回行數 |
$db->setQuery('INSERT INTO #__table (col1, col2) VALUES ('value1', 'value2')');
$db->execute(); // 執行寫入
$insertId = $db->insertid(); // 獲取自增 ID
$query = $db->getQuery(true)
->select('*')
->from('#__users')
->where('status = :status')
->bind(':status', 1);
$db->setQuery($query);
$users = $db->loadObjectList();
$db->transactionStart();
try {
$db->setQuery($sql1)->execute();
$db->setQuery($sql2)->execute();
$db->transactionCommit();
} catch (Exception $e) {
$db->transactionRollback();
throw $e;
}