joomla 2.5,如何从数据库中检索数据?

时间:2013-11-26 14:36:44

标签: php sql database joomla module

我想在我的模块首页上显示数据库中的数据。要从数据库中检索数据,我将此代码写入helper.php

public static function getdb($params)
{
// Get a db connection.
$db = JFactory::getDbo();

// Create a new query object.
$query = $db->getQuery(true);

// Select all records from the user profile table where key begins with "custom.".
// Order it by the ordering field.
$query->select($db->quoteName(array('user_id', 'profile_key', 'profile_value',   'ordering')));
$query->from($db->quoteName('#__user_profiles'));
$query->where($db->quoteName('profile_key') . ' LIKE '. $db->quote('\'custom.%\''));
$query->order('ordering ASC');

// Reset the query using our newly populated query object.
$db->setQuery($query);

// Load the results as a list of stdClass objects (see later for more options on    retrieving data).
$results = $db->loadObjectList();
foreach($results as $value)
{
echo $value;
}
}

和我的helloworld.php文件放了这段代码

<?php


// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

// Include the syndicate functions only once
require_once( dirname(__FILE__).DS.'helper.php' );


$hello = modHelloWorldHelper::getdb( $params );


require( JModuleHelper::getLayoutPath( 'mod_helloworld' ) );
?>

和tmpl / default.php文件代码是

<?php // no direct access
defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
<?php echo $hello; ?>

但结果是空白的。没有在模块页面中显示。如何从数据库中获取数据?如何从数据库中获取数据的正确格式?

3 个答案:

答案 0 :(得分:0)

$ db-&gt; loadObjectList()加载一个对象数组,不能作为字符串回显,试着

foreach($results as $value)
{
  var_dump($value);
}

OR:

foreach($results as $value)
{
  echo $value->user_id;
}

答案 1 :(得分:0)

在$ results = $ db-&gt; loadObjectList()之后的helper.php中的

;删除其他代码并插入此代码(您应该返回值不要回显它)

return $results;

并在tmpl / default.php文件中执行foreach循环

foreach($hello as $value)
{
  echo $value['user_id'];
}

答案 2 :(得分:0)

SELECT `user_id`,`profile_key`,`profile_value`,`ordering`
FROM `pwsha_user_profiles`
WHERE `profile_key` LIKE '\'custom.%\''
ORDER BY ordering ASC

是否是您代码中生成的查询。

我不确定你要尝试运行什么查询,以及你是否真的认为这是查询,但我不打赌。

我建议

$query->where($db->quoteName('profile_key') . ' LIKE '. $db->quote('custom.%'));