Supposons que vous ayez construit une requête avec Joomla.
// 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();
Exemple à partir d'ici: https://docs.joomla.org/Selecting_data_using_JDatabase
Existe-t-il une commande pour imprimer l'instruction de requête (pas les résultats, mais le SQL réel)?
vous devez faire écho à __toString ()
echo($query->__toString());
vous pouvez plus d'infos ici
https://docs.joomla.org/API16:JDatabaseQuery/_toString
J'espère que ça aide
Vous pouvez également utiliser la fonction replacePrefix
de Joomla, qui affiche la requête dans un format pouvant être inséré directement dans PhpMyAdmin.
Voici un exemple:
$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);
Produira les éléments suivants:
SELECT `something` FROM `jos_content`
Vous pouvez également utiliser la méthode native dump()
: echo $query->dump();
L'objet JDatabaseQuery
a une fonction __toString()
qui génère la requête afin que vous puissiez effectuer les opérations suivantes:
echo $db->getQuery();
Ou si vous voulez le transmettre à une fonction, vous pouvez le convertir explicitement en chaîne:
var_dump((string)$db->getQuery());
La fonctionnalité de débogage de Joomla vous fournira de nombreuses informations sur les requêtes exécutées lors du chargement de votre site Web.
echo $query;
ira bien.
cela utilise ce code
echo($query->__toString());