PHP通过(PDO)Mysql表字段一键生成创建sqlite的SQL
2024-10-19 04:31:12
首发于:http://www.zzzzy.com/201406053158.html
/** * Mysql表字段一键生成创建sqlite的SQL 2 * @author: Skiychan <contact@zzzzy.com> * $db 数据库 * $tbname 表名 * $is_blob 需要保存的图片二进制数组 array("img1","img2","img3")形式,默认为false * $retbname 自定义生成sqlite的表名 * return SQL的语句形式 */ public function creat_sqlite($db, $tbname, $is_blob = false, $retbname = false){ $runsql1 = $db->query("SELECT * FROM `$tbname` limit 1"); $fields_rows = $runsql1->columnCount(); $tb_fields_info = array(); $tb_string = ""; $dot = ""; for ($i = 0; $i < $fields_rows; $i++) { if ($i == 1) { $dot = ", "; } $tb_meta = $runsql1->getColumnMeta($i); $tb_string .= $dot.$tb_meta['name']; //var_dump($tb_meta); //如果存在数据且字段存在需要取消的字段中 if ($is_blob && in_array($tb_meta['name'], $is_blob)) { $tb_string .= " "."blob"; } else { //如果不需要保存为二进制 switch($tb_meta['native_type']){ case "VAR_STRING": $tb_string .= " "."varchar"; break; case "LONG": $tb_string .= " "."integer"; break; case "BLOB": $tb_string .= " "."text"; break; case "TINY": $tb_string .= " "."smallint"; break; } } if (isset($tb_meta['flags'][1]) && ($tb_meta['flags'][1] === "primary_key")) { $tb_string .= " "."PRIMARY KEY"; } if (isset($tb_meta['flags'][0]) && ($tb_meta['flags'][0] === "not_null")) { $tb_string .= " "."NOT NULL"; } //var_dump($tb_meta); } //生成的sqlite表名 $retbname = $retbname == true ? $retbname : $tbname; //创建数据的SQL语句 $creat_data = "CREATE TABLE IF NOT EXISTS {$retbname} ($tb_string);"; return $creat_data; }
最新文章
- javascript 函数重载 overloading
- net与树莓派的情缘(一)
- Kosaraju算法---强联通分量
- android加载大量图片内存溢出的三种方法
- 整数划分 (区间DP)
- 使用Markdown写文档
- Native VS H5 VS React Native
- unity3d 延迟处理方法
- SQL条件表达式
- 图标字体库(用CSS样式生成搜索、购物车等图标)
- eclipse(Version: Mars.2 Release (4.5.2)) groovy plugin install process.
- Python属性(@property)
- AspNetCore MVC + Vue.Js 项目搭建
- [P1082][NOIP2012] 同余方程 (扩展欧几里得/乘法逆元)
- 前端开发必须知道的JS(一) 原型和继承
- python+selenium win32gui实现文件上传 enumerate()
- ios开发之--VC的生命周期
- Spring Boot中使用Spring Security进行安全控制
- linux:将job放在后台执行的方法
- 《JavaScript 高级程序设计》总结
热门文章
- Eclipse reports that Android SDK Content Loader has encountered a problem. parseSdkContent failed.
- Linux crontab 命令格式与具体样例
- 四种方案解决ScrollView嵌套ListView问题
- iostat详解
- UDP包的最大大小是多少?
- 正确的使用枚举(Enum)
- 【邮件】imap与pop3的区别
- 玩转html5<;canvas>;画图
- i++与++i的区别
- JLabel跟label