2

mysql データベースのテーブルの情報の配列を返す PHP 関数を作成しています。私はphpでコーディングするのが初めてで、同じことをより効率的に行う方法を探しています。私の方法はあまり効率的ではないようです。これは、mysql 結合ステートメントを使用するのに適した場所でしょうか?

これが私の機能です。

public static function getAllTables()
{
    // Get an array of all the tables in the database
    $sql = "SHOW TABLES";

    //this makes a connection to mysql database using mysqli
    $mysqlConnection = new CMySqlConnection(); 
    $result = $mysqlConnection->mysqli->query($sql);
    $tablesArray = array();
    while($row = $result->fetch_row()) {

        $tablesArray[$row[0]]=array();

    }

    $result->close();

    //Get an array of all the table names in database
    $arrayKeys = array_keys($tablesArray);

    //foreach table get the column's info
    foreach($arrayKeys as $key){ 
        $sql="  SHOW COLUMNS from " . $key;
        $result = $mysqlConnection->mysqli->query($sql);
        for($i = 0; $row = $result->fetch_row(); $i++) {

            //format the array to use a descriptive key rather than a number
            $row['columnName'] = $row[0];
            $row['type'] = $row[1];
            $row['null'] = $row[2];
            $row['key'] = $row[3];
            $row['default'] = $row[4];
            $row['extra'] = $row[5];

            unset($row[0]);
            unset($row[1]);
            unset($row[2]);
            unset($row[3]);
            unset($row[4]);
            unset($row[5]);

            // put the column info into the tables array
            $tablesArray[$key][$i] = $row;
        }
        $result->close();
    }


    $mysqlConnection->Disconnect();

    // return the tables array
    return $tablesArray;
}

ご意見ありがとうございます:)

4

1 に答える 1

2

INFORMATION_SCHEMA を照会するだけです。これらは、データベースに関する情報を含む仮想テーブルです: http://dev.mysql.com/doc/refman/5.5/en/information-schema.html

SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES;

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='schema' AND TABLE_NAME='table';
于 2012-09-15T18:54:24.420 に答える