繁体   English   中英

在SQL Server Native Client 10.0中执行查询时出错

[英]Error executing Queries in SQL Server Native Client 10.0

我最近开始再次使用php(上次就像7年前一样),有些恶魔建议我使用codeigniter Framework。

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

要点:尝试使用活动记录/ 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;

不知道如何解决它

我认为这是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);
    }
}

希望这会奏效。

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

而不是上面的查询使用下面的方法来执行codeigniter中的执行过程

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

暂无
暂无

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

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