如何在 CodeIgniter 中连接到 SQL Server 数据库?
Posted
技术标签:
【中文标题】如何在 CodeIgniter 中连接到 SQL Server 数据库?【英文标题】:How do I connect to a SQL Server database in CodeIgniter? 【发布时间】:2012-04-02 08:22:19 【问题描述】:我目前正在 CodeIgniter 中启动一个应用程序,我想使用 SQL Server。
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = '#.#.#.27';
$db['default']['username'] = '@@@@@@';
$db['default']['password'] = '@@@@@@@@@';
$db['default']['database'] = '$$$$$$$$$$$$$';
$db['default']['dbdriver'] = 'mssql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
自动加载数据库后,它只显示一个没有错误的空白页面。您能否告诉我要使用 SQL Server 数据库还需要做哪些其他更改?
#autoload.php#
$autoload['libraries'] = array('database');
【问题讨论】:
听起来你需要启用 PHP 的错误报告。 @shanethehat ,尝试在主 index.php 文件中使用 error_reporting () 值。没有成功。 【参考方案1】:使用 $db['default']['dbdriver'] = 'sqlsrv'; 并在 Windows 上安装 Microsoft Drivers for PHP for SQL Server
CodeIgniter MSSQL connection
【讨论】:
【参考方案2】:我无法让它与mssql
的支持驱动程序一起工作,所以我使用了sqlsrv
我通常以hostname
连接ip,port,所以我改变了它。
pconnect
也给了我一些问题。我将它设置为FALSE
,它开始工作了。
这是我要工作的配置:
$db['default']['hostname'] = '127.0.0.1,1433';
$db['default']['username'] = 'username1';
$db['default']['password'] = 'secretpassword';
$db['default']['database'] = 'databasename';
$db['default']['dbdriver'] = 'sqlsrv';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
【讨论】:
【参考方案3】:您的配置代码很好。延伸阅读here
如果您认为错误没有出现,请转到 index.php
并在顶部放置以下 sn-p 以显示错误。
error_reporting(E_ALL);
其他,然后检查 MSSQL 服务是否正在运行并且可以访问。可以创建一个简单的.php
并尝试使用普通代码进行连接。
非 CI 文件之类的,
<?php
$server = 'YOURPC\SQLEXPRESS';
$link = mssql_connect($server, 'user', 'pass');
if (!$link)
die('Something went wrong while connecting to MSSQL');
?>
【讨论】:
【参考方案4】:它与mysql的过程相同。 使用下面给出的相同配置:
$active_group = '默认'; $active_record = TRUE;
$db['default']['hostname'] = 'xxx.xx.xx.xx\SQLEXPRESS';
$db['default']['username'] = 'sa';
$db['default']['password'] =
'xxxxxx'; $db['default']['database'] = 'xxxxx';
$db['default']['dbdriver'] = 'mssql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] => 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
在你的模型中使用与
函数选择代理($table,$agent)
$field = $this->db->get_where($table, array('var1' =>$agent,'day(date)'=>date('d')));
$fields=$field->result(); return $fields;
【讨论】:
【参考方案5】:我刚刚解决了这个问题。我正在连接到由 microsoft Azure 托管的 MSSQL
在互联网上进行了几次研究后,我遵循的步骤如下:
数据库.cfg:
$db['default']['hostname'] = 'XXXXXXX.database.windows.net';
$db['default']['username'] = 'username';
$db['default']['password'] = 'password';
$db['default']['database'] = 'databasename';
$db['default']['dbdriver'] = 'sqlsrv';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
主要是 dbdriver、pcconnect 和您应该正确配置的主机名。休息很常见。从您的 azure 数据库详细信息中获取主机名。
我还修改了几个系统文件,因为我听说 DB 驱动程序存在问题。
系统/数据库/驱动程序/sqlsrv/sqlsrv_driver.php
function db_pconnect()
//$this->db_connect(TRUE);
return $this->db_connect(TRUE);
和
function affected_rows()
//return @sqlrv_rows_affected($this->conn_id);
return @sqlsrv_num_rows($this->result_id);
我能够连接到数据库并创建数据库应用程序。
希望它能帮助有需要的人:)
【讨论】:
【参考方案6】:遵循这些简单的步骤:
安装启用“混合模式”的实例。如果您不确定观看this - 视频以正确的顺序开始。也许完全观看它是个好主意。
更改 '...ci/application/config/database.php' 中的 db-config
$active_group = 'default';
$query_builder = TRUE;
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'sa', // <- use 'sa'
'password' => 'THE_PASSWORD_YOU_SET_ON_INSTALL', // "mixed-mode"
'database' => 'ci',
'dbdriver' => 'sqlsrv',
// 'dbdriver' => 'mysqli', // <- my old "non-server" config (approx. 70% slower)
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
【讨论】:
【参考方案7】:这个怎么样?我已经看到它在一些服务器上工作。这是 Windows 服务器吗?
$db['default']['dbdriver'] = "odbc";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
further reading
希望对你有帮助
【讨论】:
以上是关于如何在 CodeIgniter 中连接到 SQL Server 数据库?的主要内容,如果未能解决你的问题,请参考以下文章