How to get information in JSON format about a MySQL table.
INFORMATION_SCHEMA has information about the metadata of the database structure such as column types, defaults, lenghts and keys.
To view all the available information returned for a table execute the following with your database & table name added.
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'database' AND TABLE_NAME = 'table';
Now to build an array for the JSON output using PHP:
$database = 'the_db_name'; $table = 'test_table'; $output_array = array(); $select = $db->prepare("SELECT COLUMN_NAME, COLUMN_TYPE, COLUMN_DEFAULT, DATA_TYPE, IS_NULLABLE, COLUMN_KEY FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?;"); $select->execute([$database, $table]); $cols = 0; while ($row = $select->fetch(PDO::FETCH_ASSOC)) { $column = $row['COLUMN_NAME']; $type = $row['COLUMN_TYPE']; $type_short = $row['DATA_TYPE']; $default = $row['COLUMN_DEFAULT']; $is_nullable = $row['IS_NULLABLE']; $column_key = $row['COLUMN_KEY']; $output_array[] = array('column' => $column, 'type' => $type, 'type_short' => $type_short, 'default' => $default, 'is_nullable' => $is_nullable, 'key' => $column_key); $cols++; } $output_array = array_merge(array('database' => $database, 'table' => $table, 'columns' => $cols), $output_array);
To view output:
echo json_encode($output_array);
Here is a sample response:
{ "database": "store", "table": "items_sample", "columns": 4, "0": { "column": "id", "type": "int(11)", "type_short": "int", "default": null, "is_nullable": "NO", "key": "PRI" }, "1": { "column": "item", "type": "varchar(255)", "type_short": "varchar", "default": null, "is_nullable": "NO", "key": "MUL" }, "2": { "column": "quantity", "type": "int(11)", "type_short": "int", "default": "0", "is_nullable": "NO", "key": "" }, "3": { "column": "sold", "type": "int(11)", "type_short": "int", "default": "0", "is_nullable": "NO", "key": "" } }