大家好!

因為使用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)
有問題可以發問喔
感恩!

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