Codeigniter affected_rows的简单插入不工作的SQL Server


Codeigniter affected_rows for simple insert not working for SQL Server

注意:我使用SQL Server

这是我的模型代码:
$this->db->insert('VOTER', array('voter_name' => $data['name'], 'event_id' => 1));
return $this->db->affected_rows() > 0;

数据插入成功,但affected_rows()函数破坏了我的PHP。没有错误,也没有警告。当我尝试echo/print_r affected_rows()的值时,它什么也不返回(不是null,只是没有)。

如果echo/print_raffected_rows()之后,它们将不会显示,因为(我相信)我的PHP已经停止了。

数据插入成功,因为它在调用affected_rows()之前插入。

Please Please help me

非常感谢您的帮助

您的问题中没有提到这一点,但您正在使用CodeIgniter 2。x……你什么也看不到因为你禁用了display_errors和/或error_reporting

affected_rows()不能与CI2中的'sqlsrv'驱动程序一起工作,因为它调用了一个不存在的函数(更具体地说,函数调用中缺少一个字母)。换句话说,这是一个bug。

CodeIgniter 2处于安全维护模式,直到2015年10月31日(仅一周时间),并且不接受非安全补丁,这意味着此错误将被修复。在10月31日之后,它将被完全抛弃,版本3将是唯一支持的版本。

解决方案:升级到最新的CodeIgniter 3.0。X版本,现在

在您的代码中,您返回的条件是错误的。我们使用if来检查条件

return $this->db->affected_rows() > 0;// wrong return

你必须做

if( $this->db->affected_rows() > 0)
 return $this->db->affected_rows();
else
FALSE;

像这样修改代码:

$this->db->insert('VOTER', array('voter_name' => $data['name'], 'event_id' => 1));
$insert_status = $this->db->affected_rows();
return $insert_status > 0 ? TRUE : FALSE;