web-dev-qa-db-fra.com

Récupérer plusieurs résultats de la base de données

Je n'ai pas beaucoup d'expérience de Joomla ou PHP, il me manque donc probablement quelque chose de très simple. J'essaie de charger une certaine liste d'ID utilisateur dans un tableau. Ce code fonctionne excepté charge seulement un résultat.

$sql = 'SELECT user_id FROM #__user_usergroup_map WHERE group_id = ' . $usergroup;
$usersInGroup = array();
$usersInGroup[] = $this->app->database->queryResult($sql);

Queryresult () ne prend-il en charge que des résultats uniques? Existe-t-il une méthode différente que je peux utiliser qui prend en charge plusieurs résultats?

Merci,

Tim

1
timf

La méthode "officielle" de Joomla consiste à utiliser la classe JDatabaseQuery pour créer la requête et la transmettre à la couche base de données. Ensuite, vous utilisez la fonction loadAssocList ou loadObjectList pour obtenir un tableau avec toutes les lignes.

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from('#__users_usergroup_map');
$query->where($db->quoteName('group_id').' = ' . $db->quote($usergroup));
$db->setQuery($query);
$result = $db->loadObjectList(); // alternative $db->loadAssocList();

Le $result est un tableau contenant toutes les lignes de la base de données.

2
Harald Leithner

Si votre requête est censée renvoyer une seule valeur par ligne, vous souhaitez renvoyer une "colonne" de données. Ceci est mieux présenté comme un tableau unidimensionnel indexé.

loadColumn () est le meilleur outil pour le travail.

$db = JFactory::getDbo();
$query = $db->getQuery(true)
    ->select("user_id")
    ->from("#__users_usergroup_map")
    ->where("group_id = " . $db->quote($usergroup));
$db->setQuery($query);
$ids = $db->loadColumn();
0
mickmackusa