Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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
在config/database.php中将前缀添加到表中,但有一些例外_Php_Mysql_Database_Codeigniter_Codeigniter 2 - Fatal编程技术网

在config/database.php中将前缀添加到表中,但有一些例外

在config/database.php中将前缀添加到表中,但有一些例外,php,mysql,database,codeigniter,codeigniter-2,Php,Mysql,Database,Codeigniter,Codeigniter 2,我决定将两个相关WBSITA,B的表合并到一个数据库中,这样它们就可以共享一些表 我已经在网站的表中添加了前缀B\uu,这样我就可以将它们与表A区分开来,避免名称相似的表之间发生冲突 所以我现在有两个选择: 1-更改网站B源代码中的每个表名,并向其添加B\前缀。。。这需要很长时间 2-在config/database.php中使用前缀选项。。。我要用它 但问题是: 两个网站共有3个表,它们没有任何前缀 1 - users 2 - tractions 3 - sessions 所以我要做的是

我决定将两个相关WBSIT
A,B
的表合并到一个数据库中,这样它们就可以共享一些表

我已经在网站的表中添加了前缀
B\uu
,这样我就可以将它们与表A区分开来,避免名称相似的表之间发生冲突

所以我现在有两个选择:

1-更改网站
B
源代码中的每个表名,并向其添加
B\
前缀。。。这需要很长时间

2-在config/database.php中使用前缀选项。。。我要用它

但问题是:

两个网站共有3个表,它们没有任何前缀

1 - users
2 - tractions 
3 - sessions 
所以我要做的是为这3个表在前缀中进行execption

基本上在我想要的网站B的config/database.php中

$db['default'] = array(
    'dbprefix' => 'B_',
);
但我想对3个表进行一些验证,如:

$exception = array('users' , 'tractions' , 'sessions' );

if(in_array($table_name , $exception )
$db['default']['dbprefix'] = '';

这可能是可行的,但我不知道具体位置和方式更好的方法是使用前缀B_u为所有3个表创建视图,这样代码中就不需要任何异常

插入查询也可以正常工作,因为在视图中只更新一个表

例如:

 CREATE VIEW B_users as SELECT * FROM users;

因此,现在在CodeIgniter中,可以通过视图访问users表,并且可以正常工作。

在您查询use
$this->db->dbprefix之前,它非常简单,可以被忽略

$this->db->dbprefix=''; 我曾经这样使用过它,它对我来说很好

范例

public function table_update($data,$id)
{

$this->db->dbprefix = ''; 
$this->db->update('users', $data, array('id' => $id));

return $this->db->affected_rows();

}
你能检查一下吗

注意:在构造函数中调用dbprefix也不需要在dbprefix之前调用任何查询。请确保使用具有任何前缀表的模型时不遵循此操作

公共函数构造() {


我想你误解了!这3个表与其他表不同,没有前缀。是的,我建议创建带有前缀的视图,这样就不需要对prefix.thanx进行任何代码更改,但目标是避免更改每个查询的源代码,如果我想这样做,我可以在查询=>
$this->db->update('B_users',$data,array('id'=>$id));
    parent::__construct();
    $this->db->dbprefix = ''; 

}