1

私は 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
    )
...
...

どこが間違っているのか、適切な結果を得るにはどうすればよいですか

4

1 に答える 1

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>";
}

mysql_*Joomla データベース オブジェクトは、すべてのデータベース作業に使用する必要があります。どの関数も使用しないでください。

于 2013-08-12T12:44:06.337 に答える