【问题标题】:Connect to MS SQL on (Linux)Centos with Codeigniter使用 Codeigniter 连接到 (Linux)Centos 上的 MS SQL
【发布时间】:2014-04-15 13:14:58
【问题描述】:

我喜欢用 Codeigniter 连接 (Linux)Centos 上的 MS SQL 数据库。刚刚安装了 Centos Linux。 Apache/ftp 有效。

但是知道我想通过 Codeigniter 连接到我的 Linux 机器中的内部 SQL 服务器。 我已经安装了 Yum mssql-php,但是当我尝试在 Codeigniter 中连接时,它显示“无法使用提供的设置连接到您的数据库服务器。”。

我的问题是我需要在我的 Centos 机器上做什么才能将我的 Codeigniter PHP 与内部 SQL 2008 数据库连接起来?

我的 Codeigniter 设置是:

$db['default']['hostname'] = '***\***,1433';
$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;

在 XAMPP Windows 机器上,此设置在使用 sqlsrv 时运行良好。但这只是 在 Windows 机器上受支持..

-- 编辑--

我的 PHPinfo 屏幕显示:

【问题讨论】:

    标签: php sql sql-server linux codeigniter


    【解决方案1】:

    你需要在你的 linux 机器上安装 php-mssql 扩展。

    第 1 步:安装所需的存储库

    CentOS 6 和 Red Hat (RHEL) 6 上的 Remi 依赖

    rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
    rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
    

    CentOS 5 和 Red Hat (RHEL) 5 上的 Remi 依赖

    rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
    rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
    

    第 2 步:安装扩展程序

    yum --enablerepo=remi php-mssql
    

    第 3 步:启用扩展

    编辑您的 php.ini 并加载 php_mssql 库并重新启动您的 Apache Web 服务器。

    【讨论】:

    • 感谢您的评论。 Epel 已安装。我的 Centos“不是 rpm 包”不接受第二个链接。我认为我的系统中启用了 mssql。 phpinfo() 通过 Freets 库提供 mssql。这是一个好兆头吗?
    • 好的。我将删除当前的 mssql 库并搜索 Remi 扩展。
    • 对不起,我已经编辑了我之前的声明。我认为从哪里安装库并不重要。 FreeTDS 的库版本是正确的。我认为问题可能与配置文件有关。您是否尝试过清除 CodeIgniter 缓存?
    • Codeigniter 缓存为空。当我安装freetds时,我的codeigniter给出了一个数据库错误,当我删除freetds时,codeigniter给出了一个空白页面。所以我瘦是有帮助的。但是在互联网上,许多使用 freetds 的教程会使用服务器设置更改 Linux 配置文件。但我喜欢在我的 codeigniter 中这样做..
    【解决方案2】:

    Codeigniter_project\application\config\database.php

     $active_group = 'default';
        $query_builder = TRUE;
    
    $db['default'] = array(
        'dsn'   => '',
        'hostname' => 'localhost',
        'username' => 'admin',
        'password' => 'Admin@321',
        'database' => 'xxxx',
        'dbdriver' => 'mysqli',
        //'dbdriver' => 'mysql',
        '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
    );
    
    
    $db['posdb']['hostname'] = 'xxx.xxx.xxx.xxx:1433';
    //$db['posdb']['port'] = 1433; // or the port you configured on step 6
    $db['posdb']['username'] = 'sa';
    $db['posdb']['password'] = 'myself@123';
    $db['posdb']['database'] = '
    

    块引用

    新的';

    $db['posdb']['dbdriver'] = 'mssql';
    $db['posdb']['dbprefix'] = '';
    $db['posdb']['pconnect'] = TRUE;
    $db['posdb']['db_debug'] = FALSE;
    $db['posdb']['cache_on'] = FALSE;
    $db['posdb']['cachedir'] = '';
    $db['posdb']['char_set'] = 'utf8';
    $db['posdb']['dbcollat'] = 'utf8_general_ci';
    $db['posdb']['swap_pre'] = '';
    $db['posdb']['autoinit'] = TRUE;
    $db['posdb']['stricton'] = FALSE;
    

    将 posdb 视为 2012 年将与远程 mssql 连接的第二个数据库

    在Controller中得到这个是

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    class Contrller_name extends CI_Controller{     
    
        public function __construct()
        {
          parent::__construct();     
          $this->load->model('my_model');
          $this->load->library('session');    
        }
        public function connet(){       
            $connnet =  $this->my_model->connet();
            echo "<pre>";
            print_r($connnet);
            //var_dump($connnet);
        }
    }   
    ?>
    

    现在是模特

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
    class My_model extends CI_Model
    {
         function __construct()
         {         
              parent::__construct();
              $this->load->helper('date');
              $this->pos_db= $this->load->database('posdb', TRUE);  // loading secondary remote database 
    
         }
         function connet(){        
            $sql ="SELECT TOP 10 * FROM dbo.Party";
        $query = $this->pos_db->query($sql);
        $result = $query->result_array();
        return $result;
         }
    
    }?>
    

    这对我来说大部分时间都有效

    【讨论】:

      【解决方案3】:

      目前通过在 Linux 机器上安装 mssql 来为我工作。 Codeigniter 有如下配置:

      $db['sql']['dbdriver'] = 'mssql';
      
      $db['sql']['dbprefix'] = '';
      
      $db['sql']['pconnect'] = TRUE;
      
      $db['sql']['db_debug'] = FALSE;
      
      $db['sql']['cache_on'] = FALSE;
      
      $db['sql']['cachedir'] = '';
      
      $db['sql']['char_set'] = 'utf8';
      
      $db['sql']['dbcollat'] = 'utf8_general_ci';
      
      $db['sql']['swap_pre'] = '';
      
      $db['sql']['autoinit'] = TRUE;
      
      $db['sql']['stricton'] = FALSE;
      

      PHP 配置:

      Linux 服务器上的 FreetDs 配置

      在 FreetDS 配置中配置 Linux 机器上的连接很重要。之后,您将在 phpinfo 中看到有一个活动连接,Codeigniter 可以连接到 SQL 数据库。

      【讨论】:

      • 如果你给 $db['sql']['db_debug'] = FALSE;意思是,你有数据库表值吗?。
      猜你喜欢
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      • 2010-10-05
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多