我正在测试连接数据库并检索结果的应用程序。它使用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);
}
,则会产生错误,表示“表不存在”。
我不明白出了什么问题?
答案 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
字段)。