1

私は一般的なクエリ ビューアーに取り組んでいますが、解決すべき最後の問題が 1 つあります。

次のデータを返すクエリがあるとします...

|  Job Code  | Mon | Tue | Wed | Thu | Fri | Sat | Sun | 
--------------------------------------------------------
|  1234-567  |  0  |  3  |  2  |  5  |  2  |  0  |  0  |
|  3214-431  |  0  |  2  |  4  |  3  |  0  |  0  |  0  |

... 等々。以下のコードを実行すると、ブラウザに次の結果が表示されます。連想配列が 2 回埋められているようです。MYSQLI_BOTH を使用してフェッチ配列を実行したときにこれを見たことがありますが、以下のコードで連想配列だけを取得する必要があります。

|  Job Code  | Mon | Tue | Wed | Thu | Fri | Sat | Sun |   Job Code  | Mon | Tue | Wed | Thu | Fri | Sat | Sun | 
--------------------------------------------------------
|  1234-567  |  0  |  3  |  2  |  5  |  2  |  0  |  0  |
|  3214-431  |  0  |  2  |  4  |  3  |  0  |  0  |  0  |

コード...

function query2table( $dbcon, $query )
{
    // Connection is already made.
    $queryResult = mysqli_query($dbcon, $query);
    if( $queryResult )
    {
        echo "<TABLE cellpadding='5' cellspacing='1' border='1'><THEAD><TR>\n";
        while ($hdrrow = mysqli_fetch_assoc($queryResult) )
        {
            foreach ($hdrrow as $hdr => $value) {
                echo "<th>";
                echo $hdr;
                echo "</th>";
            }
        }
        echo "</TR></THEAD>\n";
        mysqli_data_seek($queryResult, 0);
        while ($row = mysqli_fetch_assoc($queryResult,MYSQLI_NUM))
        {
            foreach( $row as $cell )
            {
                echo "<TD>$cell</TD>";
            }

            echo "    </TR>\n";
        }
        echo "</TABLE>\n";

    } else {
        $error = mysqli_error($dbcon);
        echo "\n<BR><BR>dbi_displayQuery - Error reading database: $error<BR><BR>\n";
    }
}

アイデア?

4

1 に答える 1

1

すべての行をループして、結果が得られた回数だけヘッダー行を出力しています。

while ($hdrrow = mysqli_fetch_assoc($queryResult) )

ヘッダー行の場合、1 行を取得してそれを使用するだけです。

if ($hdrrow = mysqli_fetch_assoc($queryResult) )
于 2013-07-01T21:05:22.503 に答える