Joomla Jdatabase访问不起作用


Joomla Jdatabase access does not work

我刚刚开始学习joomla (3.x),并安装了带有视图和模型的示例组件的一部分(参考http://docs.joomla.org/J3.3:Developing_a_MVC_Component/Adding_a_model_to_the_site_part)。

当我添加一些数据库代码到模型-见下文-我得到了错误消息:

The requested page cannot be found.
An error has occurred while processing your request.
#0  SQL=SELECT username FROM '#__users' WHERE id='391'

我假设我的查询是错误的(我故意使用字符串而不是对象的查询),但我不明白是什么错了?(ps:我检查了表与__users以及表字段id和用户名存在。

相关代码(模型部分):

                    // Get a db connection.
                    $db = JFactory::getDbo();
                    // Create a new query 
                    //$query = $db->getQuery(true); //Option A: Create a new query object
                    $query = "SELECT username FROM '#__users' WHERE id='391' "; //Option B (classic method): SQL query string
                    $db->setQuery($query);
                    //Execute query
                    $db->execute();
                    //Get single DB result
                    //if($result)
                     $this->msg = 'Hello '.$db->loadResult();

您应该为您的查询坚持Joomla编码标准,如下所示:

$db = JFactory::getDbo(); 
$query = $db->getQuery(true);
$query->select($db->quoteName('username'))
      ->from($db->quoteName('#__users'))
      ->where($db->quoteName('id') . ' = ' . (int) 391));
$db->setQuery($query);    
$result = $db->loadResult();

但是,如果您试图获得具有特定ID的s用户的用户名,那么您可以简单地使用以下命令:

$user = JFactory::getUser(391);
$this->msg = 'Hello '. $user->get('username');

问题是你引用的表名,当反引号(最多)应该使用。只有当表名与保留的mysql名共享时,才需要使用反引号。

"SELECT username FROM `#__users` WHERE id=391 "

注:INT值不需要封装