我正在构建CI应用程序,我需要使用2个不同的数据库(mysql和mssql)。当我尝试对mssql DB运行简单查询时,CI会将dbprefix添加到表名称中,因此最终会出错。如何防止CI添加前缀?在database.php文件中没有设置dbprefix
查询模型
public function getAccName($uid)
{
$this->load->database('mssqlsrv',TRUE);
return $this->db->where("uid", $uid)
->select("account")->get("user_account");
}
答案 0 :(得分:0)
要正确回答此问题:
在Codeigniter中使用多个数据库连接时,需要将每个连接分配给一个变量,例如:
$DB1 = $this->load->database('mssqlsrv', TRUE);
$DB2 = $this->load->database('group_two', TRUE);
然后您可以使用
进行查询$DB1->where("uid", $uid)->select("account")->get("user_account");
代替
$this->db->where("uid", $uid)->select("account")->get("user_account");
有关更多信息,请参见https://www.codeigniter.com/userguide3/database/connecting.html。
答案 1 :(得分:0)
如何尝试将每个数据库连接设置为某个变量:
类似于以下代码:
$mysqlConn = $this->load->database('mysql', TRUE);
$mssqlConn = $this->load->database('mssqlsrv', TRUE);
然后尝试使用它们进行查询,因为上面的代码应该是:
public function getAccName($uid)
{
$mssqlConn = $this->load->database('mssqlsrv', TRUE);
return $mssqlConn->where("uid", $uid)
->select("account")->get("user_account");
}