我无法使用PHP代码的Joomla文章中引用数据库视图。虽然我能够访问一个表,我无法参照。请注意,数据使用phpMyAdmin存储在MySQL。下面是我的代码,其视图名称为jos2_vw_member_contribution。
<?php
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('Recipient','Target', 'Actuals'))));
$query->from($db->quoteName('jos2_vw_member_contribution'));
$query->setOrder('Recipient','ASC');
$db->setQuery($query);
$results = $db->loadObjectList();
?>
上述引发错误1146 - 表不存在“#__ vw_member_contribution。”。
您的早日帮助表示赞赏上述问题。另外,我强烈建议不要使用此线程来讨论的观点对表使用的利弊。
谢谢,Paippad。
按照Joomla's Coding Standards(节标:SQL查询),你不应该从字面上命名表“前缀”,你应该使用#__
。 (虽然你的错误表明您正在使用#__
。)
在你的表名前面那个讨厌的小.
看起来麻烦。你最好检查你的表名恰恰是:#__vw_member_contribution
在你的PHP。
->setOrder()
会默默地杀死你的查询,因为它不是一个查询方法(资源:https://api.joomla.org/cms-3/classes/JDatabaseQuery.html),你应该使用order()
建议用诊断和错误捕获未经测试的代码片段:
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName(array('Recipient','Target','Actuals')))
->from($db->quoteName('#__vw_member_contribution'))
->order($db->quoteName('Recipient')); // ASC is the default direction
JFactory::getApplication()->enqueueMessage("<div>Rendered Select Query:<br>" . $query->dump() . "</div>", 'notice'); // don't show to public
try
{
$db->setQuery($query);
if (!$results = $db->loadObjectList()) // declare and check $result
{
echo "No matches found";
}
else
{
// do your thing with $result
}
}
catch (Exception $e)
{
JFactory::getApplication()->enqueueMessage("Query Syntax Error: " . $e->getMessage(), 'error'); // don't show to the public
}
附:当你的Joomla问题,请在发布Joomla Stack Exchange他们从与Joomla贴心专业知识的志愿者收到有价值的反馈。