最近项目在对接第三方接口数据,这里分享下我用来偷懒的一个PHP方法:
/** * 数据库表单创建方法 * @return string * @throws Exception */ public function createtable($js,$name) { //根据JSON数据,自动创建表 $pre=""; $table=$pre.$name;//表名 $id="id";//主键ID //is_numeric(); $lstr=""; $i=0; foreach($js as $k =>$v){ if(is_numeric($v)){ if($id==$k){ $lstr=$lstr."`".$id."` int(11) UNSIGNED NOT NULL"; }else{ if(is_bool($js[$k])){ $v=$v?1:0; $lstr=$lstr." `$k` tinyint(1) DEFAULT '".$v."'"; }else{ if(@strlen($v)<255){ $lstr=$lstr." `$k` varchar(255) DEFAULT NULL"; }else{ $lstr=$lstr." `$k` int(11) DEFAULT 0"; } } } }else{ $lstr=$lstr." `$k` varchar(255) DEFAULT NULL"; } $lstr=$lstr.","; $i=$i+1; } $lstr=substr($lstr,0,strlen($lstr)-1); $str="CREATE TABLE `".$table."` ( ".$lstr." ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; ALTER TABLE `".$table."` ADD PRIMARY KEY (`".$id."`); ALTER TABLE `".$table."` MODIFY `".$id."` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=0; COMMIT;"; return $str; }
使用这个方法后,创建数据库的步骤可以直接替换为语句生成,但是前提是接口有返回值。