2015-03-25 26 views
3

我在的Joomla如何做一個數據庫事務與Joomla的JTable

foreach($resultarray as $data1) 
{ 
    $table = JTable::getInstance('Upload', 'UsersTable', array()); 
    $table->bind($data1); 
    $table->store(); 
} 

我想要做一個交易,這樣會有START TRANSACTION插入數據到一個表,提交

如何做它?

回答

0

Joomla Joomla 3.x通過JDatabaseDriver的transactionStart,transactionCommit和transactionRollback引入了SQL事務(在支持的地方)。這取代了Joomla Joomla 2.5中引入的queryBatch方法。

$db = JFactory::getDbo(); 

try 
{ 
$db->transactionStart(); 

$query = $db->getQuery(true); 

$values = array($db->quote('TEST_CONSTANT'), $db->quote('Custom'), $db->quote('/path/to/translation.ini')); 

$query->insert($db->quoteName('#__overrider')); 
$query->columns($db->quoteName(array('constant', 'string', 'file'))); 
$query->values(implode(',',$values)); 

$db->setQuery($query); 
$result = $db->execute(); 

$db->transactionCommit(); 
} 
catch (Exception $e) 
{ 
// catch any database errors. 
$db->transactionRollback(); 
JErrorPage::render($e); 
} 

我選擇從here

+0

你提示本例中爲SQL的Joomla交易是正確的。但是,這在問題中提到的桌面級別上是否也支持? – 2016-01-07 08:22:27

+0

似乎無法與JTable :: getInstance() – Jimmy 2017-07-01 22:03:20

+0

(當我說「似乎不工作」,我的意思是$ db-> transactionRollback();不會做任何事情;它不會回滾,也不會拋出一個例外。) – Jimmy 2017-07-02 14:01:44

相關問題