用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3950|回复: 5
收起左侧

解决 1.6.1 版本中的 MSSQL 驱动 BUG

[复制链接]
发表于 2008-4-28 11:34:26 | 显示全部楼层 |阅读模式
症状:
SQL复制代码
An Error Was Encountered
Error NUMBER:
 
SELECT "EventID", "Title" FROM "table" ORDER BY "StartDate"
复制代码

多了很多双引号,导致 SQL 错误。

解决方案:
找到 system/database/drivers/mssql/mssql_driver.php 中的第 461 行(或附近),修改
PHP复制代码
$item = preg_replace('/(^'.$lbound.')([\w\d\-\_]+?)(\s|\)|$)/iS', '$1"$2"$3', $item);
复制代码


PHP复制代码
$item = preg_replace('/(^'.$lbound.')([\w\d\-\_]+?)(\s|\)|$)/iS', '$1$2$3', $item);
复制代码

然后,在其第 465 行(或附近),修改
PHP复制代码
return "\"{$item}\"";
复制代码


PHP复制代码
return "{$item}";
复制代码


此为民间解决方案,并且此 BUG 已经提交,请关注官方修正补丁!
发表于 2008-4-28 15:59:56 | 显示全部楼层
谢谢.....最近可能刚好要用mssql
发表于 2008-4-30 17:06:25 | 显示全部楼层
mysqli_driver.php中是单引号的,不知道有问题没有?

$item = preg_replace('/(^'.$lbound.')([\w\d\-\_]+?)(\s|\)|$)/iS', '$1`$2`$3', $item);

return "`{$item}`";

[ 本帖最后由 nase 于 2008-4-30 17:08 编辑 ]
 楼主| 发表于 2008-4-30 17:56:48 | 显示全部楼层
MySQL 无此问题。
发表于 2009-4-2 15:55:04 | 显示全部楼层
刚好要用mssql ,tks
回帖记号一下
发表于 2009-4-2 19:28:55 | 显示全部楼层
我在用1.7.1,不知道有没有这此问题

本版积分规则