これを修正する方法はありますか?
$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
はレスポンスに含まれますが、テーブルには行が含まれるため、結果を空にすることはできません。
オブジェクトをロードせずに結果セットが空かどうかを確認したいだけです...空でない場合は、コードの後半でそれらをロードします。
$dbo->execute()
の前に$dbo->getNumRows()
が必要であることがわかりました。興味深いのは、$dbo->loadObjectList()
が必要としないためです。
Andyはドキュメントでも重要な部分を見つけました: https://docs.joomla.org/Selecting_data_using_JDatabase#getNumRows.28.29