使用SQLSRV在批量插入上返回受影响的行时出现问题

时间:2014-06-25 14:28:09

标签: php codeigniter-2 sqlsrv

我正在使用codeignitor 2.1.4并使用insert_batch插入一堆行。我使用SQLSRV驱动程序连接到SQL Server 2008数据库。查询运行正常,但是当我运行affected_rows()函数时,我得到了一个奇怪的结果。请注意,我已经在bug的affected_rows函数中进行了更改,因此不存在问题。

我看到的是返回的号码在2位数字后被砍掉。因此,如果插入的行是343,我会得到43.如果受影响的行是35312,我将返回12。

我想知道是否有其他人见过这种行为?我检查了返回变量类型,它是INT所以它不是那样的。我对错误或变化发生的地方感到很遗憾。它几乎就像返回值被视为模数100并返回。

1 个答案:

答案 0 :(得分:0)

所以在环顾四周之后,我发现了Codeigniter中insert_batch和update_batch函数的疏忽。

由于插入和更新一次更改为100行,因此affected_rows函数仅查看最后一行($ rows%100)行,因为这将是最后一次插入/更新。

我找到的解决方案在此链接中提供:

Affected rows solution

它没有在帖子中说明,但你需要改变system / database / DB_active_rec.php文件中的insert_batch和update_batch函数。