PHP显示所有MySQL列而不知道有多少列

时间:2015-05-05 20:38:10

标签: php mysql

我需要一些PHP代码来显示所有列(不引用有多少列或它们的名称)以逗号分隔,每行一行格式。
我是一个新手,并且只使用过我按名称引用列的示例:

$result = mysql_query("select * from table1");

while($row = mysql_fetch_array($result))
{
    echo $row["field1"].','.$row["field2"];
}

在上面的代码中,我可以根据列数创建循环echo命令(如何获取此值?)以打印所有列 - 如果我可以在输出的第一行显示列名,太棒了,但这不是必不可少的。或者,是否有一个特定的命令可以实现相同的结果?

我认为答案是foreach($row as....) - 但不确定从那里开始。

2 个答案:

答案 0 :(得分:2)

是的,你可以做一个foreach,但如果你只是想以CSV风格显示你的价值,你可以这样做:

id

如果您想要更多地控制输出内容,可以使用foreach:

$firstRow = true;
while($row = mysql_fetch_array($result))
{
    if ($firstRow) {
        $firstRow = false;
        $columns = array_keys($row);
        // prints all the column names
        echo implode(',', $columns);
    }

    // print all the values
    echo implode(',', $row);
}

答案 1 :(得分:1)

您需要计算$row数组

while($row = mysql_fetch_array($result))
{
    $columns = count($row);
    for($i = 0; $i < $columns; $i++)
    {
        echo $row[$i].',';
    }
}

或者你可以使用foreach(),正如@Dagon指出的那样 -

while($row = mysql_fetch_array($result))
{
    foreach($row as $column)
    {
        echo $column . ',';
    {
}

stop using mysql_* functions。它们不再被维护,而是officially deprecated。请改为了解prepared statements,并考虑使用PDO