2015-06-30 193 views
0

我试图用ajax检索一些信息。但是当我调用select()方法时,系统返回致命错误。这是什么原因?调用一个非对象的成员函数select()

这里是我的代码:

 define('_JEXEC', 1); 
    define('DS', DIRECTORY_SEPARATOR); 
    define('JPATH_BASE', realpath(dirname(__FILE__).DS.'..')); 


    require_once (JPATH_BASE .DS.'includes'.DS.'defines.php'); 
    require_once (JPATH_BASE .DS.'includes'.DS.'framework.php'); 

    $db = JFactory::getDbo(); 
    $query = $db->getQuery(true); 
    $query->select($db->quoteName(array('id', 'product_id'))); 
    $query->from($db->quoteName('sample_table')); 
     // ->where('application_id = 11'); 


    $db->setQuery($query); 
    $results = $db->loadObjectList(); 

我已经使用这个代码多次在其他版本和它的工作。我认为这可能与版本有关。

在此先感谢。

+0

您能提供致命错误吗? – BradM

+0

你好@BradM这里是错误 '致命错误:调用一个非对象的成员函数select()' –

+0

尝试切换select和from的顺序,看看它是否也给你一个错误。 – Elin

回答

0

根据你的代码,我认为你试图在外部函数中使用Joomla函数。该错误表明您正在使用工厂对象而不包括工厂类。尝试包括所有这些文件:

define('_JEXEC', 1); 
define('DS', DIRECTORY_SEPARATOR); 
define('JPATH_BASE', $_SERVER['DOCUMENT_ROOT'] . DS . ''); 
require_once (JPATH_BASE . DS . 'includes' . DS . 'defines.php'); 
require_once (JPATH_BASE . DS . 'includes' . DS . 'framework.php'); 
require_once (JPATH_BASE . DS . 'libraries' . DS . 'joomla' . DS . 'factory.php'); 

$db = JFactory::getDbo(); 
$query = $db->getQuery(true); 
$query->select($db->quoteName(array('id', 'product_id'))); 
$query->from($db->quoteName('sample_table')); 
    // ->where('application_id = 11'); 
$db->setQuery($query); 
$results = $db->loadObjectList(); 
0

是你所有的代码?它看起来像我还没有创建数据库连接。你需要像

jimport('joomla.database.database'); 
    // System configuration. 
    $config = JFactory::getConfig(); 
    // Note, this will throw an exception if there is an error 
    // Creating the database connection. 
    $this->dbo = JDatabase::getInstance(
     array(
      'driver' => $config->get('dbtype'), 
      'host' => $config->get('host'), 
      'user' => $config->get('user'), 
      'password' => $config->get('password'), 
      'database' => $config->get('db'), 
      'prefix' => $config->get('dbprefix'), 
     ) 
    ); 

整体采用独立的应用程序需要花费几分钟的第一次,但我觉得你最好还是使用API​​,并把它在一个构造函数。以下是一个示例https://github.com/elinw/AssetFix/blob/j3/assetfix.php#L65

相关问题