在Codeigniter

时间:2016-12-14 15:25:02

标签: php sql-server codeigniter connection debian

我有一个Debian服务器来运行我的CodeIgniter项目。我使用MySQL作为我的数据库。

现在,我需要连接外部数据库。但这不是一个MySQL服务器,它是一个SQL Server。

我试过了:

$db['external']['hostname'] = 'tcp:[nameserver],[port]';
$db['external']['username'] = '[username]';
$db['external']['password'] = '[password]';
$db['external']['database'] = '[dataBaseName]';
$db['external']['dbdriver'] = 'mssql';
$db['external']['dbprefix'] = '';
$db['external']['pconnect'] = FALSE;
$db['external']['db_debug'] = TRUE;
$db['external']['cache_on'] = FALSE;
$db['external']['cachedir'] = '';
$db['external']['char_set'] = 'utf8';
$db['external']['dbcollat'] = 'utf8_general_ci';
$db['external']['swap_pre'] = '';
$db['external']['autoinit'] = TRUE;
$db['external']['stricton'] = FALSE;

我的测试文件就是这样:

$DB2 = $this->load->database('external', TRUE); 
$rs = $DB2->query("SELECT * FROM table");
$ret = $rs->result_array();
var_dump($ret);

当我执行文件测试时,输出是:

外部公司可以正确连接,因此凭据可以。

当我使用$db['external']['dbdriver'] = 'sqlsrv'时,输出为

  

致命错误:调用未定义的函数sqlsrv_connect()

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

来自the documentation

  

SQLSRV扩展可以在以下操作系统上使用:

     
      
  • Windows Vista Service Pack 2或更高版本
  •   
  • Windows Server 2008 Service Pack 2或更高版本
  •   
  • Windows Server 2008 R2
  •   
  • Windows 7
  •   

您的Debian服务器将无法使用sqlsrv_个功能。

如果需要从Linux连接到SQL Server,可以使用the PDO_DBLIB library。在CodeIgniter中,您看起来需要set the DSN manually

  

某些数据库驱动程序(如PDO,PostgreSQL,Oracle,ODBC)可能需要提供完整的DSN字符串。如果是这种情况,您应该使用'dsn'配置设置,就好像您正在使用驱动程序的底层本机PHP扩展

您必须在连接字符串中使用PDO_DBLIB DSN,该字符串可能以sybase:mssql:dblib:开头(取决于PHP的编译方式) 。看起来Debian软件包可能use the sybase: prefix

答案 1 :(得分:-1)

试试这个$ rs = $ this-> DB2->查询(“SELECT * FROM table”);