简体   繁体   English

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

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

I like to connect an MS SQL database on (Linux)Centos with Codeigniter. 我喜欢使用Codeigniter在(Linux)Centos上连接MS SQL数据库。 Just installed the Centos Linux. 刚安装了Centos Linux。 Apache/ftp works. Apache / ftp可以工作。

But know i want to connect to an internal SQL server in my Linux machine trough Codeigniter. 但是知道我想通过Codeigniter连接到我的Linux机器中的内部SQL服务器。 I already installed with Yum mssql-php but when i trying to connect in Codeigniter it says "Unable to connect to your database server using the provided settings.". 我已经安装了Yum mssql-php,但是当我尝试在Codeigniter中连接时,它显示“无法使用提供的设置连接到数据库服务器。”。

My question is what i need to do on my Centos machine to connect my Codeigniter PHP with an internal SQL 2008 database? 我的问题是我需要在Centos机器上做什么才能将Codeigniter PHP与内部SQL 2008数据库连接?

My Codeigniter setting are: 我的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;

On an XAMPP Windows machine this setup works well bu using sqlsrv. 在XAMPP Windows计算机上,使用sqlsrv可以很好地进行此设置。 But that is only supported on a Windows machine.. 但这仅在Windows计算机上受支持。

-- Edit -- -编辑-

Screen of my PHPinfo shows this: 我的PHPinfo屏幕显示如下: 在此处输入图片说明

You need to install php-mssql extension on your linux machine. 您需要在Linux机器上安装php-mssql扩展名。

Step 1: Install needed respositories 步骤1: 安装所需的存储库

Remi Dependency on CentOS 6 and Red Hat (RHEL) 6 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 Dependency on CentOS 5 and Red Hat (RHEL) 5 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

Step 2: Install the extension 步骤2: 安装扩充功能

yum --enablerepo=remi php-mssql

Step 3: Enable extension 步骤3: 启用扩展

Edit your php.ini and load the php_mssql library and restart your Apache web server. 编辑您的php.ini并加载php_mssql库,然后重新启动Apache Web服务器。

It is currently working for my by installing mssql at the Linux machine. 通过在Linux机器上安装mssql,它目前对我有用。 Codeigniter has the following configuration: 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 configuration: PHP配置: 在此处输入图片说明

FreetDs config on Linux server Linux服务器上的FreetDs配置

It is important to configure the connection on the Linux machine in the FreetDS config. 在FreetDS配置中的Linux机器上配置连接很重要。 After that you will see in the phpinfo that there is an Active connection an Codeigniter can connect with the SQL database. 之后,您将在phpinfo中看到存在一个Active连接,一个Codeigniter可以与SQL数据库连接。

在此处输入图片说明

Codeigniter_project\\application\\config\\database.php 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'] = '

Blockquote 块引用

new'; 新';

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

Consider posdb be the second database which is going to connect with remote mssql at 2012 考虑posdb是第二个将在2012年与远程mssql连接的数据库

To get this in Controller is 要在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);
    }
}   
?>

Now at model 现在在模型

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

}?>

This is worked for me most of times 大多数时候这对我有用

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

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