ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
```php <?php //用于查看特定表的详细设计信息 //desc 是 describe的缩写 //describe用于查看特定表的详细设计信息 //describe($tablename) //查询出表的列信息 //show_columns_from($tablename) //这个是查询建表语句 //show_create_table($tablename) //删除字段 //alter_table_drop($tablename, $field) //修改字段 //alter_table_change($tablename, $oldfield, $newfield, $field_type, $isnot, $as) /* 修改字段 * * $tablename 表名 * $field 字段名 * $field_type 字段类型 * $isnot 是否为空 * $as 字段注释 * 添加字段alter_table_add($tablename, $field, $field_type, $isnot, $as) $tablename 表名 $field 字段名 $field_type 字段类型 $isnot 是否为空 $as 字段注释 删除表 drop_table($oldtablename) 修改表名create_table($oldtablename, $newtablename) 创建表 create_table($tablename, $as) */ class DbExtension { /** * 批量更新函数 * @param $data array 待更新的数据,二维数组格式 * @param $table string 更新的表名 * @param string $field string 值不同的条件,默认为id * @param array $params array 值相同的条件,键值对应的一维数组 * @return bool|string */ public function batchUpdate($data=[],$table='user',$field="id") { if(count($data)==0 || empty($table)) return "" ; //获取所有的id $data_keys = array_keys($data); $col = Db::query("SHOW COLUMNS FROM `".$table."`"); $cols = []; array_map(function($value) use(&$cols){ $cols[] = $value['Field']; },$col); //拼接批量更新sql语句 $sql = "UPDATE {$table} SET "; //合成sql语句 foreach ($data[$data_keys[0]] as $key => $value) { if(!in_array($key,$cols)) continue; $sql .= "{$key} = CASE ".$field." "; foreach ($data as $k=>$v) { $str= $v[$key]; $needle= '+'; $pos = strpos($str, $needle); if($pos){ $z=explode("+",$v[$key]); $sql .= sprintf("WHEN %d THEN '%s'+ %e", $k, $z[0],floatval($z[1])); }else{ $sql .= sprintf("WHEN %d THEN '%s' ", $k, $v[$key]); } } $sql .= "END, "; } //把最后一个,去掉 $sql = substr($sql, 0, strrpos($sql,',')); //合并所有id $ids = implode(',', $data_keys); //拼接sql $sql .= " WHERE ".$field." IN ({$ids})"; return $sql; // dump($userModel->execute($sql)); } //距离排序 字段生成 public function latlngfield($lat, $lng,$latfield="lat", $lngfield="lng", $returnfield="juli") { $sql=" ROUND( 6378.138 * 2 * ASIN( SQRT( POW( SIN( ( "; $sql.= $lat." * PI() / 180 - ".$latfield." * PI() / 180 ) / 2 ), 2 ) + COS( "; $sql.= $lat." * PI() / 180) * COS( ".$latfield." * PI() / 180) * POW( SIN( ( "; $sql.= $lng." * PI() / 180 - ". $lngfield." * PI() / 180 ) / 2 ), 2 ) ) ) * 1000 ) AS " .$returnfield.""; return $sql; } //创建表 public function create_table($tablename, $as) { $sql = "create table " . $tablename; $sql .= " (id int not null auto_increment,typeid varchar(40) not null comment '类别id', "; $sql .= "creationtime int(10) not null comment '创建时间',updatetime int(10) not null comment '更新时间' ,"; $sql .= "primary key ( id ))auto_increment = 1 engine=MyISAM default charset=utf8 COMMENT='" . $as . "'"; Db::query($sql); } //修改表名 public function create_table($oldtablename, $newtablename) { $sql = "rename table " . $oldtablename . " to " . $newtablename . ""; Db::query($sql); } //删除表 public function drop_table($oldtablename) { $sql = "drop table " . $oldtablename; Db::query($sql); } /* * 添加字段 * $tablename 表名 * $field 字段名 * $field_type 字段类型 * $isnot 是否为空 * $as 字段注释 * */ public function alter_table_add($tablename, $field, $field_type, $isnot, $as) { $sql = "alter table " . $tablename . " add " . $field . " " . $field_type . " " . $isnot . " " . " comment '" . $as . "'"; Db::query($sql); } //修改字段 /* 修改字段 * * $tablename 表名 * $field 字段名 * $field_type 字段类型 * $isnot 是否为空 * $as 字段注释 * */ public function alter_table_change($tablename, $oldfield, $newfield, $field_type, $isnot, $as) { $sql = "alter table " . $tablename . " change " . $oldfield . " " . $field . " " . $field_type . " " . $isnot . " comment '" . $as . "'"; Db::query($sql); } //删除字段 public function alter_table_drop($tablename, $field) { $sql = "alter table " . $tablename . " drop column " . $field; Db::query($sql); } //用于查看特定表的详细设计信息 //desc 是 describe的缩写 //describe用于查看特定表的详细设计信息 public function describe($tablename) { $sql = "describe " . $tablename; Db::query($sql); } //查询出表的列信息 public function show_columns_from($tablename) { $sql = "show columns from " . $tablename; Db::query($sql); } //这个是查询建表语句 public function show_create_table($tablename) { $sql = "show create table " . $tablename; Db::query($sql); } //这个是查询建表语句 public function show_create_table($tablename) { $sql = "show create table " . $tablename; Db::query($sql); } } ```