注意:我使用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_r
在affected_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;