PHP通过(PDO)Mysql表字段一键生成创建sqlite的SQL

首发于: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;
     }
上一篇:Android ListView下拉刷新时卡的问题解决小技巧


下一篇:MySQL 表字段唯一性约束设置方法unique