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

Posted

技术标签:

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

我目前正在 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 () 值。没有成功。 【参考方案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】:

遵循这些简单的步骤:

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

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

希望对你有帮助

【讨论】:

以上是关于如何在 CodeIgniter 中连接到 SQL Server 数据库?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PL/SQL 中连接到另一个用户

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

如何在 swing 中连接到 h2 数据库

如何在 java 类方法中连接到我的数据库 sql 并在另一个类中调用它?

如何在 PySpark 中连接到 Presto JDBC?

如何以 SYS 身份在 Java 中连接到 Oracle?