MySQL查询没有返回任何结果

时间:2016-06-19 07:13:54

标签: php mysql joomla

我正在测试连接数据库并检索结果的应用程序。它使用PHP和Joomla框架。 问题是如果我把查询作为

UIInputViewController()
            .requestSupplementaryLexiconWithCompletion({
    lexicon in
    print("==== entries.count: \(lexicon.entries.count)")
})

上面的代码给出了“db没有返回数据”的消息,除了表包含大量数据(200多行)这一事实。

如果我将无效的表名设为$query = "SELECT * FROM #__coupon_member_details"; $this->_db->setQuery($query); $result = $this->_db->query(); $number = mysql_num_rows($result); if($number == 0 ){ JFactory::getApplication()->enqueueMessage("no data returned by db"); }else{ JFactory::getApplication()->enqueueMessage($number); } ,则会产生错误,表示“表不存在”。

我不明白出了什么问题?

2 个答案:

答案 0 :(得分:1)

在Joomla中你必须使用正确的Joomla API,就像这样。 Joomla的mysql_num_rows等价物是getNumRows

$query = $this->_db->getQuery(true);
$query = "SELECT * FROM #__coupon_member_details";
$this->_db->setQuery($query);
$result = $this->_db->query();
$numRows = $this->_db->getNumRows();
if($numRows == 0 ){
        JFactory::getApplication()->enqueueMessage("no data returned by db");
}else{
        JFactory::getApplication()->enqueueMessage($number);
}

答案 1 :(得分:1)

我会这样做:

$query = "SELECT * FROM #__coupon_member_details";
$this->_db->setQuery($query);
$arrResult = $this->_db->loadAssocList();
$intCountResults = count($arrResult);

上述查询将返回$arrResult中的数据,以及$intCountResults中的结果数。

如果您只想要号码,那么我建议您将上述内容更改为:

$query = "SELECT COUNT(*) AS `totalcount` FROM #__coupon_member_details";
$this->_db->setQuery($query);
$intCountResults = $this->_db->loadResult();

这更好,可扩展。更好的是你可以做一些像SELECT count(id)而不是SELECT COUNT(*)(如果你有一个id字段)。