Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter-从主SQL文件创建多个数据库_Php_Mysql_Sql_Codeigniter - Fatal编程技术网

Php CodeIgniter-从主SQL文件创建多个数据库

Php CodeIgniter-从主SQL文件创建多个数据库,php,mysql,sql,codeigniter,Php,Mysql,Sql,Codeigniter,获取包含模式和表创建语句的.sql文件并使用它从CodeIgniter中创建新数据库的最佳方法是什么?我希望能够使用这个.sql文件作为具有相同模式的多个数据库的蓝图,但这些数据库可以随时创建 我想我只需要能够获取这个文件,提取内容并将其回送到数据库查询中。有更好的方法吗 在提交查询之前,我还需要能够将自定义数据库名称注入到语句中。我该怎么办?只需要一个占位符关键字,并用数据库名称替换preg 为了确保同步维护所有数据库,我认为这个蓝图模式应该作为一个模块添加到CodeIgniter中。这样,如

获取包含模式和表创建语句的.sql文件并使用它从CodeIgniter中创建新数据库的最佳方法是什么?我希望能够使用这个.sql文件作为具有相同模式的多个数据库的蓝图,但这些数据库可以随时创建

我想我只需要能够获取这个文件,提取内容并将其回送到数据库查询中。有更好的方法吗

在提交查询之前,我还需要能够将自定义数据库名称注入到语句中。我该怎么办?只需要一个占位符关键字,并用数据库名称替换preg

为了确保同步维护所有数据库,我认为这个蓝图模式应该作为一个模块添加到CodeIgniter中。这样,如果我需要更改模式,我就可以上载一个新版本的模块,其中包含更新的.sql文件,并跨所有数据库执行必要的迁移。听起来合理吗?如果是这样的话,我该怎么做呢?

我以前做过(运行一个.sql文件),我使用过这个

$sql = read_file('path/to/file.sql');

$final = '';
foreach(explode("\n", $sql) as $line)
{
      if ( isset($line[0]) && $line[0] != '#' )
      {
                $final .= $line . "\n";
      }
}

foreach (explode(";\n", final) as $sql)
{
      if ($sql)
      {
                $this->db->query($sql);
      }
}

就读取文件而言,看起来不错。我想如果我需要注入数据库名,我可以在每一行上进行str_替换,对吗?数据库的更改呢?我想我只需要运行更改表的语句,然后为后续数据库上载一个新的master.sql文件?也许CI迁移类可以帮助您?是的,迁移可以做到这一点,我想,我只是一直在努力减少风险,不必维护两件事(迁移和更新的master.sql文件)。我尝试尽可能多地使用CI类,但对于数据库创建来说,DB Forge类似乎有点有限(从我看到的情况来看),只使用从Workbench导出的.sql更方便。