【问题标题】:How to connect mssql in Codeigniter?如何在 Codeigniter 中连接 mssql?
【发布时间】:2020-10-04 21:06:35
【问题描述】:

我正在尝试将 codeigniter 与 MSSQL 连接起来。我通过添加扩展名extension=php_sqlsrv_56_ts.dllextension=php_pdo_sqlsrv_56_ts.dllphp.ini 文件进行了所有可能的更改。但仍然面临如下sqlsrv错误,

错误:消息:sqlsrv_query() 期望参数 1 是资源,给定为空

sqlsrv_driver.php

function _execute($sql)
{
    $sql = $this->_prep_query($sql);
    return sqlsrv_query($this->conn_id, $sql, null, array(
        'Scrollable'                => SQLSRV_CURSOR_STATIC,
        'SendStreamParamsAtExec'    => true
    ));
}

$this->conn_id --- 这是空的。我不知道为什么它得到空值。

Codeigniter 版本:2.2 /
PHP 版本:5.6

数据库配置:

$db['default']['hostname'] = '.\sqlexpress';
$db['default']['username'] = 'UNAME';
$db['default']['password'] = '';
$db['default']['database'] = 'DBNAME'; 
$db['default']['dbdriver'] = 'sqlsrv';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$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;

注意:过去 3 天我一直被困在这个问题上,我已经尝试过了。由于我是 MSSQL 的新手,我无法找出问题所在。对此的任何帮助将不胜感激。提前致谢。

【问题讨论】:

  • 请说明您如何定义和填充$this->conn_id。要么您没有为此分配值,要么它为空,因为您的数据库连接代码失败。对您的问题重要的是代码,而不是执行特定查询的代码。
  • 你使用的是什么版本的mssql原生客户端?
  • P.S.你在什么操作系统下运行 PHP? sqlsrv 驱动程序仅适用于 Windows。如果您的 PHP 在 Linux/Mac 上运行,则需要使用 ODBC。
  • @Ashishrawat 2017
  • @ADyson 你是对的。将 db_debug 启用为 TRUE 后,出现错误“无法连接到数据库”。我正在使用 Windows 和 XAMPP

标签: php database codeigniter sqlsrv


【解决方案1】:

您正在运行不受支持的 PHP 版本。您需要升级您的 PHP 版本才能继续接收安全更新。见https://php.net/supported-versions.php

这样做还可以让您访问更新版本的 sqlsrv 驱动程序。这很重要,因为您当前的驱动程序无法连接到较新版本的 SQL Server。

您已声明您使用的是 SQL 2017。但是根据Microsoft PHP Drivers for SQL Server Support Matrix,使用 PHP 5.6 版您只能运行 3.2 版的 sqlsrv 驱动程序,而 3.2 版的驱动程序仅支持 SQL 2014 及更低版本。

【讨论】:

  • 我已将我的 sql server 降级到 2008,但我仍然遇到同样的问题。'无法连接到数据库服务器''。
  • 嗯,这可能是由于许多因素,例如。错误的连接字符串、网络问题、SQL 未运行、身份验证问题。您的应用程序是否有错误日志文件?也许会在那里记录更详细的错误消息。
  • P.S. SQL 2008 已结束其整体支持期(请参阅support.microsoft.com/en-gb/help/4456242/…),运行该版本不是一个好主意。根据您的目的使用 2012 或 2014。
猜你喜欢
  • 2012-01-29
  • 1970-01-01
  • 2020-10-08
  • 2016-10-08
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 1970-01-01
  • 2018-11-03
相关资源
最近更新 更多