Codeigniter affected_rows用于简单插入不适用于SQL Server

时间:2015-10-23 06:31:54

标签: php sql-server codeigniter

注意:我使用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()的值时,它不返回任何内容(不为空,只是没有)。

如果我在echo之后print_r / affected_rows(),则不会显示,因为(我相信)我的PHP已停止。

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

请帮助我

非常感谢您的帮助:)

3 个答案:

答案 0 :(得分:0)

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

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

你必须做

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

答案 1 :(得分:0)

将您的代码修改为:

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

答案 2 :(得分:0)

你的问题中没有提到这一点,但是你正在使用CodeIgniter 2.x ......而且你没有看到任何东西,因为你已经禁用了display_errors和/或error_reporting。

affected_rows()不适用于CI2中的'sqlsrv'驱动程序,因为它调用了一个不存在的函数(函数调用中缺少一个字母,更具体)。换句话说 - 这是一个错误。

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

解决方案:升级到最新的CodeIgniter 3.0.x版本, now