web-dev-qa-db-fra.com

Quoi utiliser à la place de getNumRows () dans Joomla 3.x

C'est ma compréhension que

$db = JFactory::getDbo();
$db->setQuery($sql);            
$db->execute();
$numRows = $db->getNumRows();

Ne fonctionne pas dans Joomla 3.x, non? Je reçois l'erreur "Mysql_num_rows () s'attend à ce que le paramètre 1 soit une ressource". La requête fonctionne correctement si je n’appelle pas getNumRows (), et j’ai un bloc try/catch autour du tout.

Qu'est-ce que nous sommes supposés utiliser à la place pour, par exemple, une requête de mise à jour, où on ne peut pas simplement utiliser loadRowList ()?

4
Jimmy

[EDIT] Utilisez la fonction Obtenir les lignes affectées pour les requêtes INSERT, UPDATE, REPLACE ou DELETE dans Joomla.

$db->getAffectedRows();

.


--Below est inclus comme réponse originale mais pas vraiment la réponse la plus utile

Ceci a été répondu sur stackoverflow ici: https://stackoverflow.com/questions/27968427/how-to-count-numbers-of-row-sur-sql-query-in-joomla-and-display- ça

En général, il semble que ce que vous avez de mieux en 3.x est:

$result = $db->loadObjectList(); 
$numRows = count($result);
3
Lance

getNumRows () est valide dans Joomla 3.x.

Quant à votre erreur ... "getNumRows () retournera le nombre de lignes de résultat trouvées par la dernière requête et en attente de lecture. Pour obtenir un résultat de getNumRows (), vous devez exécuter après la requête et avant d’avoir récupéré les résultats. "Si vous exécutez getNumRows () après loadRowList () - ou toute autre méthode d’extraction - vous pouvez obtenir un PHP Avertissement "

https://docs.joomla.org/Selecting_data_using_JDatabase#getNumRows.28.29

2
Walt Sorensen

Cela fonctionne pour moi, dans Joomla 3.7.5

$db->setQuery($query);
$db->execute();
echo $db->getNumRows();

Cependant, si j’ajoutais $ result = $ db-> loadResult (); avant getNumRows (), je reçois alors l'erreur à propos de laquelle l'affiche originale a été posée.

1
cwgso