mysql_num_rows()每隔一次返回1

时间:2014-07-22 13:38:38

标签: php mysql sql codeigniter mysqli

以下代码块在循环中运行,并在保存报表时为子行创建/修改数据:

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。我认为它可能是我缺少某个地方的服务器设置,因为它在其他环境中完美运行。

几天来一直在努力解决这个“问题”。希望任何人都可以告诉我问题可能是什么。谢谢!

0 个答案:

没有答案