【问题标题】:Error executing Queries in SQL Server Native Client 10.0在 SQL Server Native Client 10.0 中执行查询时出错
【发布时间】:2012-06-11 17:18:02
【问题描述】:

我最近又开始用php了(上次好像是7年前),有朋友推荐我用codeigniter框架。

我尝试使用 odbc 驱动程序连接到 MSSQL 2008 R2 中的数据库服务器,使用 x64 php 版本而不是 x64 IIS。这是原因之一,因为我没有使用微软提供的 php 本机驱动程序,另一个是因为生产环境将在 CentOS 中,顺便说一句,使用该驱动程序没有任何意义 ....

切入正题:尝试使用活动记录/odbc 配置连接到数据库会引发此错误

A Database Error Occurred
--------------------------
Error Number: 01000
[Microsoft][SQL Server Native Client 10.0][SQL Server]Executing SQL directly; no cursor.
SELECT * FROM (WebUsers)
Filename: C:\projects\php\test\system\database\DB_driver.php
Line Number: 330

我只是执行一个简单的查询来检索一个表。

$query = $this->db->get('WebUsers');
return $query->result_array();

这些是我的连接设置:

$db['default']['hostname'] = 'Driver={SQL Server Native Client 10.0};Server=localhost;Database=XXXXXXXXX;';
$db['default']['username'] = 'WWWWWW';
$db['default']['password'] = 'YYYYYY';
$db['default']['database'] = 'XXXXXXXXX';
$db['default']['dbdriver'] = 'odbc';
$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;

不知道怎么解决

【问题讨论】:

    标签: php sql-server codeigniter activerecord odbc


    【解决方案1】:

    我认为这是 CI 中的一个老错误。您必须在 /system/database/drivers/odbc/odbc_driver.php 中修改一个函数 _form_tables()

    function _from_tables($tables)
    {
        if ( ! is_array($tables))
        {
            return strstr($tables, ',') ? '('.$tables.')' : $tables;
        }
        else
        {
            return count($tables) > 1 ? '('.implode(', ', $tables).')' : end($tables);
        }
    }
    

    希望这会奏效。

    【讨论】:

      【解决方案2】:
      $this->db->query($sql);     
      

      在codeigniter中使用下面的方法代替上面的查询来执行过程

       $this->db->simple_query($sql);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-09
        • 2013-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-24
        • 1970-01-01
        • 2011-05-12
        相关资源
        最近更新 更多