मैं जूमला क्वेरी कैसे प्रिंट कर सकता हूं?


14

मान लीजिए आपने जूमला के साथ एक क्वेरी का निर्माण किया है।

// Get a db connection.
$db = JFactory::getDbo();

// Create a new query object.
$query = $db->getQuery(true);

// Select all records from the user profile table where key begins with "custom.".
// Order it by the ordering field.
$query->select($db->quoteName(array('user_id', 'profile_key', 'profile_value', 'ordering')));
$query->from($db->quoteName('#__user_profiles'));
$query->where($db->quoteName('profile_key') . ' LIKE '. $db->quote('\'custom.%\''));
$query->order('ordering ASC');

// Reset the query using our newly populated query object.
$db->setQuery($query);

// Load the results as a list of stdClass objects (see later for more options on retrieving data).
$results = $db->loadObjectList();

यहाँ से उदाहरण: https://docs.joomla.org/Selecting_data_using_JDatabase

क्या क्वेरी स्टेटमेंट को प्रिंट करने का कोई आदेश है (परिणाम वास्तविक एसक्यूएल नहीं)?


ताकि मैं क्वेरी को "SELECT * FROM ...." के रूप में पढ़
Mat Kay

1
डिबग मोड का उपयोग क्यों नहीं किया जाता है?
jdog

जवाबों:


18

आपको __toString () को इको करने की आवश्यकता है

echo($query->__toString());

आप यहां अधिक जानकारी डाल सकते हैं

https://docs.joomla.org/API16:JDatabaseQuery/_toString

आशा करता हूँ की ये काम करेगा


केवल इस बात का ध्यान रखना चाहेंगे कि इस पद्धति का उपयोग करते समय, यह जूमला उपसर्ग के साथ क्वेरी को डंप करता है #__
लोडर

इको (स्ट्रिंग) $ क्वेरी;
जेपीरॉफ

9

आप जूमला के replacePrefixफ़ंक्शन का भी उपयोग कर सकते हैं जो क्वेरी को एक प्रारूप में डंप करता है जिसे PhpMadAdmin की पसंद में सीधे डाला जा सकता है।

यहाँ एक उदाहरण है:

$db = JFactory::getDbo();

$query = $db->getQuery(true);
$query->select($db->quoteName('something'))
      ->from($db->quoteName('#__content')); 
$db->setQuery($query);

// Dump the query
echo $db->replacePrefix((string) $query);

निम्नलिखित उत्पादन करेंगे:

SELECT `something` FROM `jos_content`


4

JDatabaseQueryवस्तु एक है __toString()समारोह है कि क्वेरी आउटपुट ताकि आप कर सकते हैं:

echo $db->getQuery();

या यदि आप इसे किसी फ़ंक्शन में पास करना चाहते हैं, तो आप इसे स्पष्ट रूप से पहले स्ट्रिंग में डाल सकते हैं:

var_dump((string)$db->getQuery());

0

Joomla डिबग सुविधा आपको उन प्रश्नों के बारे में बहुत सारी जानकारी देगी जो आपकी वेबसाइट के लोड होने पर निष्पादित की जाती हैं।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.