我的sql查询是这个:
SELECT COUNT(*) AS NumberOfOrders FROM table_products where published = 1;
Joomla 使用 Jdatabase 来玩桌子。我在互联网上找到了这个:
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select(array('name', 'email', 'username'))
->from($db->quoteName('#__my_users'))
->where($db->quoteName('name') . ' LIKE '. $db->quote('''%SMITH%'''));
$db->setQuery($query);
// get the count
$my_count = $db->getNumRows();
// retrieve the data
$rows = $db->loadObjectList();
echo $my_count;
所以我尝试为我的查询修改此示例:
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select(array('id'))
->from($db->quoteName('#__table_products'))
->where($db->quoteName('published') . ' LIKE '. $db->quote('1'));
$db->setQuery($query);
// get the count
$my_count = $db->getNumRows();
// retrieve the data
$rows = $db->loadObjectList();
但它不起作用。我得到空的结果。怎么了?
有人可以帮我吗?
问候
$db->setQuery($query);
$my_count = $db->query();
$my_count = $db->getNumRows();
尝试这种方式来计算行数,但我不确定
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('COUNT(*)');
$query->from($db->quoteName('#__table_products'));
$query->where($db->quoteName('published') . ' LIKE '. $db->quote('''%1%'''));
$db->setQuery($query);
$count = $db->loadResult();
查看更多:https://docs.joomla.org/Selecting_data_using_JDatabase
$query->select('COUNT(*) AS NoumberOfRows');
看起来像你之前丢失的$db->execute();
// get the count
$my_count = $db->getNumRows();
从文档"要从getNumRows()获取结果,您必须在查询之后和检索任何结果之前运行它。
https://docs.joomla.org/Selecting_data_using_JDatabase#getNumRows.28.29
$db->getNumRows() 应该在 $db->execute() 之后立即调用;在这种情况下,它将返回所选行数。
简单的方法
$rows = $db->loadObjectList();
$numberRows=count($rows);
这是完整的代码。希望会有所帮助。
<?php
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName(array('column_name_here')))
->from($db->quoteName('#__table_name_here'));
$db->setQuery($query);
$db->execute();
$num_rows = $db->getNumRows();
print_r($num_rows);
$result = $db->loadRowList();
?>
简单的代码示例。
<?php
$db = JFactory::getDbo();
$query='SELECT * FROM table_products where published = 1';
$db->setQuery($query);
$rows = $db->loadObjectList();
$my_count=count($rows);
echo $my_count;
?>