PHP实现使用JSON数据自动生成相应建表SQL数据表及字段
此方法好用,方便,快捷,提高JSON转数据库的速度及准确率
由于工作原因,特写下此方法,与大家一起共享(作者:红盾科技,技术david)
//根据JSON数据,自动创建表
$pre="t_";
$table=$pre."order";//表名
$id="id";//主键ID
$js='{这里用你的JSON数据含大括号}';
$js=json_decode($js,true);
//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(strlen($v)==10)
$lstr=$lstr." `$k` datetime DEFAULT NULL";
else
$lstr=$lstr." `$k` int(11) DEFAULT 0";
}
}elseif(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` text 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;";
echo $str;