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

Php 如何选择表的所有列-递归,php,mysql,recursion,Php,Mysql,Recursion,我制作了一个递归函数来选择数据库中特定表的所有列。 但是,我的一些列有一个注释,其名称为“其他表”,如下所示: 表1发票 列:id 列:客户端id,注释:表\u客户端 列:类型\ id,注释:表格\类型 列:说明 因此,如果一列有注释,我需要进入表并选择它的所有列,依此类推 现在我需要帮助停止函数并返回包含所有列的数组。 当我将回送到while中时,我可以看到所有列,但当我返回时,我只看到第一个表的列 $columns = getAllColumns('table_invoice', $arr)

我制作了一个递归函数来选择数据库中特定表的所有列。 但是,我的一些列有一个注释,其名称为“其他表”,如下所示:

表1发票
列:id
列:客户端id,注释:表\u客户端
列:类型\ id,注释:表格\类型
列:说明

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

现在我需要帮助停止函数并返回包含所有列的数组。 当我将
回送到while中时,我可以看到所有列,但当我返回时,我只看到第一个表的列

$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;
}
有人能帮我吗

谢谢

您没有使用SQL联接是因为?我不能使用联接,因为我不知道要读多少表。我只有第一个表,其他的我不知道,我可以只有一个,但我也可以有2或3个表。这是一个问题吗?左联接仍然是联接的一部分。您可以根据前面的选择和检查注释来构建动态连接查询(但我不知道为什么会有人这样做。)注释似乎定义了外键关系。您是否定义了实际的外键?如果是,那么您可以使用此信息实际连接信息模式中的视图,并从相关表中获取所有字段。您没有使用SQL连接,因为?我不能使用连接,因为我不知道要读取多少表。我只有第一个表,其他我不知道的表,我可以只有一个,但是我也可以有2到3张桌子。为什么这是个问题?左联接仍然是联接的一部分。您可以根据前面的选择和检查注释来构建动态连接查询(但我不知道为什么会有人这样做。)注释似乎定义了外键关系。您是否定义了实际的外键?如果是,那么您可以使用此信息实际连接信息模式中的视图,并从相关表中获取所有字段。