大家好!
因為使用joomla3開發系統,這邊特別介紹一下 joomla3的 DBO 物件,DBO物件就是 資料庫物件,一般來說,基本上所有framework都會有自己的DBO,所以joomla 也不例外,有 JDatabase 這物件。
那我這邊介紹他的簡單用法
//取得DBO物件
$db = JFactory::getDBO();
//#############################查詢一筆資料
$query = $db->getQuery(true);//取得query 物件
$query->select('t.*,q.*')//欄位
->from('#__test_table AS t')//from
->join('LEFT','#__test_join AS q ON t.id = q.id')//join 方式
->where('t.id > 10 ')//條件
->order('t.id ASC');//排序
$db->setQuery($query,0,10);//設定query 字串 與 start 與 limit
$rows = $db->loadObjectList();//取得返回資料
$row = $db->loadObject();//取得返回資料(一筆)
//#############################使用子查詢
$queryL = $db->getQuery(true);//取得子查詢query 物件
$queryL->select('p.id')
->from('#__test_little AS p')
->where('p.id > 99 ');
$queryN = $db->getQuery(true);//取得query 物件
$queryN->select('p.*')//欄位
->from('#__test_table2 AS p')//from
->where('p.id IN ('.$queryL.') ');//子查詢,直接呼叫子查詢物件會變成輸出字串
$db->setQuery($queryN,0,10);//設定query 字串 與 start 與 limit
$rowNs = $db->loadObjectList();//取得返回資料
//#############################新增一筆資料
$data = array(
'id' => '1',
'name' => '張小明',
);
$data = (object)$data;//insertObject 只能使用物件寫入
$db->insertObject('#__test_table',$data);
//#############################修改更新一筆資料(簡易)
$data = array(
'id' => '1',
'name' => '張小明改名',
);
$data = (object)$data;//insertObject 只能使用物件寫入
$db->updateObject('#__test_table',$data,'id');//table 名稱,資料,更新依據的key(只能設定一個)
//#############################修改更新一筆資料
$queryU = $db->getQuery(true);//取得query 物件
$queryU->update("#__test_table")
->set('name = '.$db->quote("張小明改名"))//設定值,quote為跳脫符號函式
->where('id = 1 ');//條件
$db->setQuery($query);//設定query
$db->execute();//執行query
//刪除一筆資料
$query->delete('#__test_table')
->where('id = 1 ');
$db->setQuery($query);
$db->execute();
//使用 transaction(有錯誤則取消更新)
$db->transactionStart();
try
{
$Query = $db->getQuery(true);
$data = array(
'id' => '1',
'name' => '張小明改名2',
);
$data = (object)$data;
$db->updateObject('#__test_table',$data,'id');
$db->transactionCommit();
}
catch (Exception $e)
{
$db->transactionRollback();
JError::raiseError( 500,$e);
}
基本上會常用是這些
#__ 是table 的前綴詞
$db->quote 是在query 中常用的跳出字元函式(避免SQL injection)
有問題可以發問喔
感恩!

留言板
歡迎留下建議與分享!希望一起交流!感恩!