我的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();
但它不起作用。我得到空的结果。有什么问题?
有人可以帮我吗?
此致
答案 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();
答案 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();
?>