web-dev-qa-db-fra.com

Impossible d'obtenir des lignes numériques avec le pilote de base de données

Une idée comment résoudre ce problème?

$dbo = JFactory::getDbo();
$query = 'SELECT `#__example`.`example_value` AS `value` FROM `#__example`';
$dbo->setQuery($query);
$rowsCount = $dbo->getNumRows();
$isEmpty = $rowsCount == 0;
echo $isEmpty;

J'ai eu

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given
in C:\server\www\libraries\joomla\database\driver\mysqli.php on line 343

et 1 dans la réponse, alors que la table contient des lignes, le résultat ne peut donc pas être vide.

Je veux juste vérifier si le jeu de résultats est vide sans charger d'objets, etc. Je les charge dans une partie ultérieure du code si ce n'est pas vide.

2
inf3rno

J'ai découvert qu'il me fallait une $dbo->execute() avant la $dbo->getNumRows(). C'est intéressant, car la $dbo->loadObjectList() n'en a pas besoin.

Andy a également trouvé la partie importante dans la documentation: https://docs.joomla.org/Selecting_data_using_JDatabase#getNumRows.28.29

2
inf3rno