php 把mysql转sqlite_PHP使用PDO方式,将Mysql的数据转换成SQLite形式的一个function_MySQL...

最近在做一个将mysql数据转换成sqlite数据的功能,因为要将image的数据切换为blob二进制形式保存,所以我就自己写一个类,从类中,我提取出这个方法来分享。为了以后还能正常使用,所以我使用了PDO方式来处理。 /** * 通过Mysql创建SQlite * $db 数据库 * $tbname 表名 * $is_images 需要保存的图片二进制数组 array("img1","img2","img3")形式,默认为false * return SQL的数组形式 */ function creat_sqlite($db, $tbname, $is_images = false){ $runsql1 = $db->query("SELECT * FROM `$tbname` limit 1"); $fields_rows = $runsql1->columnCount(); $tb_fields_info = array(); $tb_string = ""; for ($i = 0; $i < $fields_rows; $i++) { $dot = ($i > 0) ? "," : ""; $tb_meta = $runsql1->getColumnMeta($i); //如果存在数据且字段存在需要取消的字段中 if($is_images && in_array($tb_meta['name'], $is_images)){ continue; } $tb_string .= $dot.$tb_meta['name']; switch($tb_meta['native_type']){ case "VAR_STRING": $tb_string .= " "."varchar"; break; case "LONG": $tb_string .= " "."integer"; break; case "BLOB": $tb_string .= " "."text"; break; } if(isset($tb_meta['flags'][1]) && ($tb_meta['flags'][1] === "primary_key")){ $tb_string .= " "."PRIMARY KEY"; } if($tb_meta['flags'][0] === "not_null") { $tb_string .= " "."NOT NULL"; } } //创建数据的SQL语句 $creat_tbs['data'] = "CREATE TABLE IF NOT EXISTS data ($tb_string);"; //创建图片的SQL语句 if($is_images) { $tb_images = ''; foreach($is_images as $k => $v){ $di = ($k > 0) ? " , " : " "; $tb_images .= $di.$v." blob NOT NULL"; } $creat_tbs['images'] = "CREATE TABLE IF NOT EXISTS images ( id integer PRIMARY KEY NOT NULL, tid integer NOT NULL,$tb_images);"; } return $creat_tbs; }

demo生成的结果(没设置image)为(我将其转换成了json形式): {"data":"CREATE TABLE IF NOT EXISTS data (id integer PRIMARY KEY NOT NULL,name varchar NOT NULL,nickname varchar NOT NULL,emails varchar NOT NULL,passwd varchar NOT NULL,status NOT NULL);"}

f68f2add0b68e4f9810432fce46917b7.png

相关标签:

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值