开发日志 api开发中json 作为字段 自动写入字段和防止Json变化导致插入错误
api开发中,api提供方往往会修改json的字段,系统后期维护也报错,需要对字段进行校验
//读取数据库表的所有字段
$database = \think\Config::get('database.database');
$fieldArr = [];
$list = db()->query("SELECT COLUMN_NAME,COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ? AND TABLE_SCHEMA = ?", [$table, $database]);
foreach ($list as $k => $v) {
if ($importHeadType == 'comment') {
$fieldArr[$v['COLUMN_COMMENT']] = $v['COLUMN_NAME'];
} else {
$fieldArr[$v['COLUMN_NAME']] = $v['COLUMN_NAME'];
}
}
$table_name = "fa_goodcang_productstock";
$field_list = Db::query('SHOW COLUMNS FROM `' . $table_name . '`');
$field_arr = [];
foreach ($field_list as $field){
$field_arr[] = $field['Field'];
}
//避免Json有的字段,数据库表里面没有, 把没有用到的键值 删除掉
foreach ($product_inventory_item as $item_key=>$item_value){
//如果json字段不存在表里 就删除他
if(!in_array($item_key, $field_arr)){
unset($product_inventory_item[$item_key]);
}
}
//第二个方法
//information_schema数据库中有一个名为COLUMNS的表
// "select COLUMN_NAME from information_schema.COLUMNS where table_name = 'fa_goodcang_productstock'"
//读取json的方法
//print_r($field_arr);