如何选择表的所有列 - 递归

时间:2017-03-20 13:40:27

标签: php mysql recursion

我做了一个递归函数来选择DB中特定表的所有列。 但是,我的一些列中有一个带有其他表名称的注释,如下所示:

table_invoice
列: id
column: client_id ,评论: table_client
column: type_id ,评论: table_type
专栏: description

因此,如果列有注释,我需要进入表并选择其所有列,依此类推。

现在我需要帮助来停止该函数并返回包含所有列的数组。 当我进入echo时,我可以看到所有列,但是当我返回时,我只看到第一个表的列。

$columns = getAllColumns('table_invoice', $arr);

function getAllColumns($table, $arr)
{
    $sql = mysql_query("SELECT * FROM information_schema.columns WHERE TABLE_NAME = '$table'");

    while($row = mysql_fetch_array($sql))
    {
        $arr[] = array('column_name' => $row['COLUMN_NAME'], 'table_name' => $table);
        //echo $row['COLUMN_NAME'];  //this works fine, show all columns
        $comment = $row['COLUMN_COMMENT'];
        if(!empty($comment))
        {
            getAllColumns($comment, $arr);
        }
    }

    return $arr;
}

有人能帮助我吗?
谢谢!

0 个答案:

没有答案