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


Trouble returning the affected rows on batch insert using SQLSRV

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

我看到的是返回的数字在2位数后被截断。如果插入的行数是343,我就得到43。如果受影响的行为35312,则返回12行。

我想知道是否有人见过这种行为?我已经检查了返回变量类型,它是INT,所以它不是。我不知道错误或变化发生在哪里。这几乎就像将返回值作为模数100并返回。

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

因为插入和更新一次在100行中更改,所以affected_rows函数只看到最后($rows%100)行,因为这将是最后一次插入/更新。

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

影响行解决方案

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