web-dev-qa-db-ja.com

データベースドライバでnum行を取得できません

これを修正する方法はありますか?

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

わかった

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

および1はレスポンスに含まれますが、テーブルには行が含まれるため、結果を空にすることはできません。

オブジェクトをロードせずに結果セットが空かどうかを確認したいだけです...空でない場合は、コードの後半でそれらをロードします。

2
inf3rno

$dbo->execute()の前に$dbo->getNumRows()が必要であることがわかりました。興味深いのは、$dbo->loadObjectList()が必要としないためです。

Andyはドキュメントでも重要な部分を見つけました: https://docs.joomla.org/Selecting_data_using_JDatabase#getNumRows.28.29

2
inf3rno