web-dev-qa-db-fra.com

Comment puis-je imprimer une requête Joomla?

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)?

13
Mat Kay

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

17
Piero Marsilio

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`
9
Lodder

Vous pouvez également utiliser la méthode native dump(): echo $query->dump();

5
Dmitry Rekun

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());
4
Joomler

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.

0
Klaus Veliu
echo $query;

ira bien.

cela utilise ce code

echo($query->__toString());
0