Я работаю над модулем 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
но это дает мне это предупреждение "Warning: 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 ) ... ...
где я ошибаюсь и что я должен сделать, чтобы получить правильный результат
Вы уже загрузили данные через объект базы данных 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_*
.