使用file_put_contents()PHP生成sql文件

时间:2014-04-11 11:13:08

标签: php sql

我有一个数据库架构,我从每个模块生成,如$schema

Array
(
    [database] => Array
        (
            [0] => CREATE  TABLE IF NOT EXISTS `test` (
                  `testid` VARCHAR(255) NOT NULL ,
                  `name` VARCHAR(45) NOT NULL ,
                  `type` VARCHAR(45) NOT NULL ,
                  `version` INT NULL ,
                  `info` TEXT NULL 
                  PRIMARY KEY (`dirname`) )
                ENGINE = InnoDB
                DEFAULT CHARSET = utf8
        )

)

Array
(
    [database] => Array
        (
            [0] => CREATE  TABLE IF NOT EXISTS `menu_test` (
                              `mid` VARCHAR(150) NOT NULL ,
                              `menu_test` VARCHAR(45) NOT NULL ,
                              `name` VARCHAR(150) NOT NULL ,
                              PRIMARY KEY (`mid`, `language`) )
                            ENGINE = InnoDB
                            AUTO_INCREMENT = 1
                            DEFAULT CHARSET = utf8
        )

    [insert] => Array
        (
            [0] => Array
                (
                    [table] => menu_test
                    [fields] => Array
                        (
                            [mid] => menu_admin
                            [language] => EN
                            [name] => Admin
                        )

                )

            [1] => Array
                (
                    [table] => menu_test
                    [fields] => Array
                        (
                            [mid] => menu_seo
                            [language] => EN
                            [name] => Menu SEO
                        )

                )

依此类推......我需要用这个架构生成一个* .sql文件,所以我尝试了这个,但它只添加了最后一个元素!

$database = DOCUMENT_ROOT."sites/user/database.sql" ;
foreach ($schema as $type => $query) 
        {
            switch ($type)
            {
                case "database"  : 
                    foreach ($query as $sql)
                        file_put_contents($database,$sql.";");

                break ; 
                case "insert"  : 
                    foreach ($query as $sql)
                        file_put_contents($database,$sql.";");
                break ; 
            }

        }

非常感谢!

1 个答案:

答案 0 :(得分:2)

如果filename不存在,则创建该文件。否则,将覆盖现有文件,除非设置了FILE_APPEND标志。

  file_put_contents($database,$sql.";",FILE_APPEND); should work.