如何计算joomla中的sql查询行数并显示它?

时间:2015-01-15 16:39:17

标签: php sql joomla

我的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(); 

但它不起作用。我得到空的结果。有什么问题?

有人可以帮我吗?

此致

7 个答案:

答案 0 :(得分:1)

$db->setQuery($query);
$my_count = $db->query();
$my_count = $db->getNumRows();

答案 1 :(得分:0)

尝试这种方式来计算行数,但我不确定

$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

答案 2 :(得分:0)

应该在$ db-> execute()之后立即调用$ db-> getNumRows(); 在这种情况下,它将返回所选行的数量。

答案 3 :(得分:0)

$query->select('COUNT(*) AS NoumberOfRows');

答案 4 :(得分:0)

之前看起来像你遗失的$db->execute();
// get the count 
$my_count = $db->getNumRows();

从文档“要从getNumRows()获取结果,您必须在查询之后并在检索任何结果之前运行它。”

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

答案 5 :(得分:0)

简单方法

$rows = $db->loadObjectList(); 

$numberRows=count($rows);

答案 6 :(得分:0)

这里是完整的代码。希望会有所帮助。

<?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();   
?>