2016-08-11 38 views
0

我使用CodeIgniter 3.1.0开发应用程序。 为了改进它的安装,我写了一个Install_Controller和一个Install_Model。我正在使用Database Forge类来管理数据库。感谢它,我可以创建一个数据库,但我不能检查它是否存在。实际上,我的想法是将查询传递给dbforge,如“CREATE DATABASE IF NOT EXISTS mydatabase”。我搜索了文档,但没有任何功能可以满足我的要求。我可以在哪里写这样的查询?CodeIgniter:使用Database Forge测试DB是否存在

这里是前者的摘录:

$this->load->model('Install_Model'); 
$this->Install_Model->launchInstall(); 

这里是后者的代码:

class Install_Model extends CI_Model { 

    public function __construct() { 

     parent::__construct(); 

      $this->load->dbforge(); 

    } 

    public function index() { 

     if ($this->dbforge->create_database('mydatabase')) 
     { 
      echo "OK"; 
     } 

     else { 

      echo "Error somewhere"; 
     } 

     $this->load->database('mydatabase'); 
    } 

} 

回答

0

您可以使用您的安装脚本中这个自定义的SQL查询功能来创建新的数据库。

public function createDB($databse) { 
    $strSQL = "CREATE DATABASE IF NOT EXISTS $databse"; 
    $query = $this->db->query($strSQL); 
    if (!$query) { 
     throw new Exception($this->db->_error_message(), 
     $this->db->_error_number()); 
       return FALSE; 
      } else { 
       return TRUE; 
      } 

} 
+0

谢谢,因此有没有办法使用OOP与dbforge类? – Fafanellu

+0

你可以根据你的需求改变这个类。所以不用担心它的体系结构。我只是使用CI Active记录概念向你展示一个解决方案。 – Tharanga

+0

是的,我太关注使用dbforge了,我几乎忘记了可以使用常规查询:) – Fafanellu