以下代码块在循环中运行,并在保存报表时为子行创建/修改数据:
function save_report_module2_importers($data)
{
$query = $this->db->get_where('tbl_rep_mod2_importers', array('report_id' => $data['page_data1']['report_id'], 'id' => $data['id'], 'company_id' => $data['page_data1']['company_id']));
if($query->num_rows() == 0 || !isset($data['id']))
{
$this->db->insert('tbl_rep_mod2_importers', $data['page_data1']);
return $this->db->insert_id();
}
else
{
$this->db->where('report_id', $data['page_data1']['report_id']);
$this->db->where('id', $data['id']);
$this->db->update('tbl_rep_mod2_importers', $data['page_data1']);
$res = $query->row();
return $res->id;
}
return true;
}
如果是新的子行,则传递的$data['id']
(PK)值当然为null。该查询当然应返回0行。它在我的开发盒上以及我的远程登台服务器上运行,分别运行WAMP和LAMP堆栈。
问题出在公司的生产服务器上,其中在插入带有新子行的新报告时,num_rows()
的每个其他实例都返回1而不是总是0.应该没有具有空PK的行。原始mysql_num_rows()
或mysqli_num_rows()
表现出相同的行为。
我注意到如果我注释掉INSERT查询,则不会发生此行为。基本上,下一个SELECT总是返回1.我尝试将SELECT查询加倍,第二个始终按预期返回0。我认为它可能是我缺少某个地方的服务器设置,因为它在其他环境中完美运行。
几天来一直在努力解决这个“问题”。希望任何人都可以告诉我问题可能是什么。谢谢!