繁体   English   中英

使用Codeigniter连接到(Linux)Centos上的MS SQL

[英]Connect to MS SQL on (Linux)Centos with Codeigniter

我喜欢使用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屏幕显示如下: 在此处输入图片说明

您需要在Linux机器上安装php-mssql扩展名。

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

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

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

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

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服务器。

通过在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中看到存在一个Active连接,一个Codeigniter可以与SQL数据库连接。

在此处输入图片说明

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;
     }

}?>

大多数时候这对我有用

暂无
暂无

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

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