我正在构建一个CI应用程序,需要使用两个不同的数据库(mysql&mssql(。当我尝试对mssqlDB运行一个简单的查询时,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");
}
要正确回答这个问题:
当在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了解更多信息。
尝试将每个数据库连接设置为某个变量:
如以下代码:
$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");
}