sql >> データベース >  >> RDS >> Mysql

Mysqlは行を列として表示します

    再度出力する前に、まず一時配列内のすべてのデータを転置する必要があります。これを行うための2つの方法を紹介します。

    方法1:すべての行をフェッチし、行インデックスを列インデックスで切り替えるだけです:

    <table>
        <tr>
            <th>Subject</th>
            <th>year1</th>
            <th>year2</th>
            <th>year3</th>
        </tr>
    
        <?php
        $mysqli = new mysqli('localhost', 'user', 'pass', 'database');
        $id = 1;
        $report = array();
        $columnIndex = 0;
        $query = $mysqli->query("SELECT HTML, CSS, Js FROM term WHERE Stdid='$id'");
        while ($results = $query->fetch_assoc()) {
            foreach ($results as $course => $score) {
                $report[$course][$columnIndex] = $score;
            }
            $columnIndex++;
        }
    
        foreach ($report as $course => $results) { ?>
            <tr>
                <th><?php echo $course; ?></th>
                <?php foreach ($results as $score) { ?>
                    <th><?php echo $score; ?></th>
                <?php } ?>
            </tr>
        <?php } ?>
    </table>
    

    方法2:配列内のすべての行をフェッチして、配列の配列になり、array_mapを使用します コールバックNULLを使用 転置する( http://php.net/manualの例4を参照) /en/function.array-map.php )。コース名を最初の配列に追加して、最終結果に含める必要があります。

    <table>
        <tr>
            <th>Subject</th>
            <th>year1</th>
            <th>year2</th>
            <th>year3</th>
        </tr>
    
        <?php
        $mysqli = new mysqli('localhost', 'user', 'pass', 'database');
        $id = 1;
        $data = array(array('HTML', 'CSS', 'Js'));
        $query = $mysqli->query("SELECT HTML, CSS, Js FROM term WHERE Stdid='$id'");
        while ($row = $query->fetch_assoc())
        {
            $data[] = $row;
        }
        $data = call_user_func_array('array_map', array_merge(array(NULL), $data));
        ?>
    
        <?php
        foreach ($data as $row): ?>
            <tr>
                <?php foreach ($row as $value): ?>
                    <th><?php echo $value?></th>
                <?php endforeach; ?>
            </tr>
        <?php endforeach; ?>
    </table>
    


    1. UPDATEmysqlopがcc-numberで機能しない

    2. MINおよびMAX文字長のデータ型のようなMySQLVARCHAR

    3. PHP PDO複数のクエリリクエストを実行する方法は?

    4. アプリケーションのアクセス許可をデータベースに保存する