私はこのようなデータベースクエリを実行しています:
$db = JFactory::getDbo();
$user = JFactory::getUser();
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__table_name'));
$query->where($db->quoteName('username') . " = ". $db->quote($user->username));
$db->setQuery($query);
$result = $db->loadResult();
$row = $db->loadrow();
print_r($row); </pre>
私が取得する出力は、次のようになります。
配列([0] => any_username [1] => val_of_col1 [2] => val_of_col2 [3] => val_of_col3)
変換する方法HTMLテーブル?
これを試して:
$rows = $db->loadrow();
echo '<table>';
echo '<tr>';
foreach($rows as $row) {
// display your results here
}
echo '</tr>';
echo '</table>';
最初にベーステーブル構造をエコーし、次に結果を表示します。
問題のスクリプトについて考えられる誤解を解消するためだけに...
$result = $db->loadResult();
には、プロセスで実行するアクティブ/必要な役割がありません。 _$result
_は宣言後は使用されず、loadRow()
を「セットアップ」しません。
各列の値をエコーする方法については、最も簡潔な方法としてimplode()
をお勧めします。その際、loadRow()
はキーを無視するため、loadAssoc()
またはimplode()
から結果セットを構築しても問題はありません。重要なのは、SELECT句に書き込む列です。これにより、表示される列が正確に決まります。すべての列を表示することはほとんどないので、_*
_をリテラル列宣言と交換する必要があります(コンマ区切りの文字列または文字列の配列として)。以下のスニペットは、単一の列のみを選択した場合(および1次元の結果セットを生成した場合)でも問題なく機能します。
$db->loadRow()
with implode()
:
_if (!$row = $db->loadRow()) { // declare and check
echo "No Row Found";
} else {
echo '<table>';
echo '<tr>';
echo '<td>' , implode('</td><td>', $row) , '</td>';
echo '</tr>';
echo '</table>';
}
_
列見出しの行を表示する場合は、loadAssoc()
を使用して結果セットを生成します。画面に出力されるように1つ以上の列見出しを調整する場合は、クエリのSELECT句で適切な場所に「列のエイリアス」を使用します。
_if (!$row = $db->loadAssoc()) { // declare and check
echo "No Row Found";
} else {
echo '<table>';
echo '<tr>';
echo '<th>' , implode('</th><th>', array_keys($row)) , '</th>';
echo '</tr>';
echo '<tr>';
echo '<td>' , implode('</td><td>', $row) , '</td>';
echo '</tr>';
echo '</table>';
}
_