【问题标题】:How do I connect to a SQL Server database in CodeIgniter?如何在 CodeIgniter 中连接到 SQL Server 数据库?
【发布时间】:2012-04-02 08:22:19
【问题描述】:

如何在 CodeIgniter 中连接到 SQL Server 数据库?

我目前正在 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 () 值。没有成功。

标签: php sql-server-2008 codeigniter configuration connection


【解决方案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】:

            遵循这些简单的步骤:

            1. 安装启用“混合模式”的实例。如果您不确定观看this - 视频以正确的顺序开始。也许完全观看它是个好主意。

            2. 更改 '...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

              希望对你有帮助

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2020-02-11
                • 2013-12-14
                • 1970-01-01
                • 2013-07-08
                相关资源
                最近更新 更多