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


How to count numbers of row of sql query in joomla and display it?

我的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; 
?>