簡體   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