gpt4 book ai didi

php - 获取 mysql 数据库模式

转载 作者:行者123 更新时间:2023-11-28 23:13:23 27 4
gpt4 key购买 nike

是否有可能以 json 或 xml 格式获取 mySQL 数据库的完整结构?

我正在寻找的是一种获取模式(存储的数据无关紧要)以使用它为应用程序创建后端/crud 的方法。

最佳答案

这不是问题的全面答案,因为它不返回 json。但它是一个简单的类,将有关表的所有相关信息作为对象提供。这可以很容易地转换为返回 json。

该类依赖于传递一个实现 rawQuery 方法的 db 对象,如 PHP-Mysqli-Database-Class做。但如果需要,您可以轻松地重写方法 extractTableInfo

<?php
Class dbHelper {
private $db;

public function __construct($db) {
$this->db = $db;
}

public function extractTableInfo($tableName) {
$result = $this->db->rawQuery("DESCRIBE `".$tableName."`");

$tableInfo = array();
foreach ($result as $key => $value) {
$info = new \stdClass();
$info->name = $value['Field'];
$info->type = $this->_getColumnType($value['Type']);
$info->length = $this->_getLength($value['Type']);
$info->hasNull = $this->_getNull($value['Null']);
$info->default = $this->_getDefault($value['Default']);
$tableInfo[] = $info;
}
return $tableInfo;
}

public function getIndexes($tableName) {
$result = $this->db->rawQuery("SHOW INDEX FROM `".$tableName."`");
return $result;
}



private function _getLength($info) {
$pattern = '/\({1}([\d\W]*)\){1}/';
preg_match($pattern, $info, $matches);
return isset($matches[1]) ? $matches[1] : NULL;
}

private function _getColumnType($info) {
$pattern = '/([\w]*)(\([\d\W]*\))*/';
preg_match($pattern, $info, $matches);
return isset($matches[1]) ? $matches[1] : NULL;
}

private function _getNull($info) {
if($info==='NO') {
return false;
} else {
return true;
}
}

private function _getDefault($info) {
if($info>='') {
return $info;
} else {
return NULL;
}
}

}

用法:

$db = YOUR DATABASE OBJECT/CLASS;
$dbHelper = new dbHelper($db);
$tableName = "test";
$tableInfo = $dbHelper->extractTableInfo($tableName);
echo json_encode($tableInfo);

要获取数据库中所有表的列表,您需要:

SHOW TABLES [in dbname]

或关注this question

不过,还有许多具有不同 yield /输出的替代方案:

  • 使用mysql workbench
  • 使用 phpmyadmin
  • 使用命令行 mysqldump -u root -p --no-data dbname > schema.sql

关于php - 获取 mysql 数据库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44960665/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com