我正在使用joomla模块,我为db连接编写此代码,然后从db获取数据并将其打印在表中
$db = JFactory::getDBO();
$query = $db->getQuery(true);
if($q == ""){
$query
->select(array('Stune_code,Stune_name,Stune_artist'))
->from('my_table')
->where('sub_cat_id = "4"')
->limit('$start, $per_page');
$query_pag_data = $db->loadObjectList();
$msg = "<table class='show-rslt'><tr>
<th class='tbl-header'>Song Title</th>
<th class='tbl-header'>Artist</th>
<th class='tbl-header'>Code</th>
</tr>";
while ($row = mysql_fetch_array($query_pag_data)) {
$msg .= "<tr>";
$msg .= "<td class='title'>" . htmlentities($row['Stune_name']) . "</td>";
$msg .= "<td class='title'>" . htmlentities($row['Stune_artist']) . "</td>";
$msg .= "<td class='title'>" . htmlentities($row['Stune_code']) . "</td>";
$msg .= "</tr>";
}
$msg .= "</table>";
$msg = "<div class='data'><ul>" . $msg . "</ul></div>"; // Content for Data
但是它给了我这个警告“警告:mysql_fetch_array()期望参数1是资源,在C中给出的数组:”
然后我调试它并使用print_r()它给我结果像
Array
(
[0] => stdClass Object
(
[Stune_code] => 501348
[Stune_name] => xxx
[Stune_artist] => abc
)
[1] => stdClass Object
(
[Stune_code] => 501351
[Stune_name] => xxx
[Stune_artist] => abc
)
[2] => stdClass Object
(
[Stune_code] => 5011727
[Stune_name] => xxx
[Stune_artist] => asd
)
...
...
我错了,我该怎么做才能得到正确的结果
答案 0 :(得分:3)
您已经通过Joomla数据库对象加载了数据,因此无需再次尝试获取。只需执行foreach
循环遍历数组。
首先将您的调用更改为loadAssocList()
(因为您尝试使用关联数组而不是对象访问数据时需要):
$query_pag_data = $db->loadAssocList();
然后将循环更改为:
foreach($query_pag_data as $row) {
$msg .= "<tr>";
$msg .= "<td class='title'>" . htmlentities($row['Stune_name']) . "</td>";
$msg .= "<td class='title'>" . htmlentities($row['Stune_artist']) . "</td>";
$msg .= "<td class='title'>" . htmlentities($row['Stune_code']) . "</td>";
$msg .= "</tr>";
}
Joomla数据库对象应该用于所有数据库工作,不要尝试使用任何mysql_*
函数。