2012-10-03 9 views
5

मैं JOOMLA 2.5 का उपयोग कर एक बार में कई SQL अद्यतन क्वेरीज़ चलाने के लिए चाहता हूं। मेरे कोड के नीचे:क्या जूमला का उपयोग कर एक में कई अपडेट क्वेरी चलाना संभव है?

require_once '../includes/framework.php'; 
$query = "UPDATE #__mytable SET myfield='value' where id=1; UPDATE #__mytable SET 
myfield='value' where id=2; UPDATE #__mytable SET myfield='value' where id=3;"; 
$db = JFactory::getDbo(); 
$db->setQuery($query); 
$db->query(); 

लेकिन यह मुझे एक वाक्यविन्यास त्रुटि दिखाता है। मैंने सीधे MYSQL में परीक्षण करने की कोशिश की और यह काम करता है।

उत्तर

4

PHP डिफ़ॉल्ट रूप से एकाधिक क्वेरी की अनुमति नहीं देता है। आप mysql_connect पर पैरामीटर जोड़कर ऐसा करने के लिए मजबूर कर सकते हैं, लेकिन मैं इसकी अनुशंसा नहीं करता (यह एसक्यूएल इंजेक्शन के लिए भारी सुरक्षा छेद खोलता है)।

मुझे नहीं पता कि कैसे JFactory इसे संभालता है, लेकिन अगर यह अलग होता तो मुझे आश्चर्य होगा।

इसके बारे में अधिक जानकारी: http://de3.php.net/manual/en/function.mysql-query.php#91669

+0

ठीक है, तो मुझे लगता है कि यह एक लूप का उपयोग करना बेहतर होगा। मैं उस समय को मापने की कोशिश करता हूं जो (** 0.095135 दूसरा **) लेगा और यह ठीक लगता है। आपके सहयोग के लिए धन्यवाद। – toto

+0

यदि आप प्रत्येक प्रविष्टि में समान मान सेट करते हैं तो आप इसे एक ही प्रश्न में कर सकते हैं: 'अद्यतन #__mytable SET myfield =' value 'जहां आईडी IN (1,2,3) ' –

+0

हां, लेकिन मेरे पास नहीं है वही मूल्य – toto

0

आप JDatabaseDriver::splitSql() लिए अलग-अलग प्रश्नों की एक सरणी में कई प्रश्नों के एक स्ट्रिंग विभाजित का उपयोग करना चाहिए, और उन्हें एक समय में एक बार चलाते हैं।

इस प्रकार आंतरिक एक्सटेंशन इंस्टॉलर काम करता है।

टिप्पणियों के बारे में चिंता न करें, उन्हें हटा दिया जाएगा।

$sql = "UPDATE #__mytable SET myfield='value' where id=1; UPDATE #__mytable SET myfield='value' where id=2; UPDATE #__mytable SET myfield='value' where id=3;"; 

$db = JFactory::getDbo(); 
$queries = JDatabaseDriver::splitSql($sql); 
foreach ($queries as $query) 
{ 
    try 
    { 
     $db->setQuery($query)->execute(); 
    } 
    catch (JDatabaseExceptionExecuting $e) 
    { 
     ... 
    } 
} 
संबंधित मुद्दे