繁体   English   中英

如何从CodeIgniter 3连接到SQL Server数据库?

[英]How do I connect to a SQL Server database from CodeIgniter 3?

我正在尝试将CodeIgniter 3项目连接到运行WAMP的Web服务器上的SQL Server 2008。

我尝试使用sqlsrv,odbc和pdo dbdrivers连接到数据库,但仍然无法执行此操作。

到目前为止,这是我尝试过的

  1. 安装了PHP的sqlsrv驱动程序并安装了它们。
  2. sqlsrvpdo_sqlsrv显示在WAMP本地主机页面和phpinfo()页面上

在此处输入图片说明

这是我的database.php文件,

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
    'dsn'   => '',
    'hostname' => '172.20.15.52',
    'username' => 'ivrserver',
    'password' => 'ivrserver',
    'database' => 'HMS-Migration',
    'dbdriver' => 'sqlsrv',
    '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

);

但是我在项目的每个页面上都收到此错误,

A Database Error Occurred

Unable to connect to your database server using the provided settings.
Filename: C:/wamp64/www/ghms/system/database/DB_driver.php
Line Number: 436

我试图使用ODBC连接器。 我从ODBC数据源制作了系统DNS,该数据源连接到SQL Server数据库并以以下方式更改database.php,

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'mssqltest',
    'username' => 'ivrserver',
    'password' => 'ivrserver',
    'database' => 'HMS-Migration',
    'dbdriver' => 'odbc',
    '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
);

这能够连接数据库,但事实证明查询生成器不适用于ODBC ¯\\ _(ツ)_ /¯

然后,我转向尝试pdo连接到SQL Server,并对database.php进行了以下更改

$db['default'] = array(
    'dsn'   => 'sqlsrv:server=172.20.15.52,1433;Database=HMS-Migration',
    'hostname' => '',
    'username' => 'ivrserver',
    'password' => 'ivrserver',
    'database' => '',
    'dbdriver' => 'pdo',
    '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
);

这要求我为PHP安装sql驱动程序,但我想我已经安装了它们!

A Database Error Occurred

SQLSTATE[IMSSP]: This extension requires the Microsoft ODBC Driver for SQL Server to communicate with SQL Server. Access the following URL to download the ODBC Driver for SQL Server for x64: https://go.microsoft.com/fwlink/?LinkId=163712

Filename: C:/wamp64/www/ghms/system/database/drivers/pdo/pdo_driver.php
Line Number: 142

我回去检查驱动程序安装,

  1. 我有启用了线程安全的php 7.0.32 x64
  2. 检查C:\\ wamp64 \\ bin \\ php \\ php7.0.32 \\ ext正确的.dll
php_pdo_sqlsrv_7_ts_x64.dll
php_sqlsrv_7_ts_x64.dll
  1. 检查php.ini文件
extension=php_pdo_sqlsrv_7_ts_x64.dll
extension=php_sqlsrv_7_ts_x64.dll
  1. 这两个扩展都显示为wamp的任务栏菜单中已启用的PHP扩展

题,

尽管我已经尽力检查了一切,因为它仍然没有连接到数据库-我在某个地方一定是错的。 将CodeIgniter 3项目连接到SQL Server的正确方法是什么?

编辑

我想我找到了解决方案。 pdo dbdriver上的错误要求我安装用于MS SQL的ODBC驱动程序,但我却检查了用于MS SQL的PHP​​驱动程序。 我去了错误中的链接,下载了ODBC驱动程序,现在看来可以正常工作! 傻我!

试试这个。定义你的sqlsrv:

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'mssqltest',
    'username' => 'ivrserver',
    'password' => 'ivrserver',
    'database' => 'HMS-Migration',
    'dbdriver' => 'sqlsrv',
    '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
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM