我运行存储过程时命令不同步!使用mysqli驱动程序

时间:2012-03-22 11:28:10

标签: php codeigniter

我正在使用Mysqli驱动程序。

当我尝试运行存储过程时,我得到Command不同步。我试过了

free_result();

这是我的代码的片段可以任何1告诉我解决方案吗?

function block()
{
    $qry = "CALL `sp_get_codes_by_block_id`(?)";
    $result = $this->db->query($qry, $this->getBlockId());
    $temp_array = array();
    $temp_array = $result;
    $result->free_result();
    return $result->result_array();
}

3 个答案:

答案 0 :(得分:4)

好吧我在很多头脑风暴和搜索之后实际上找到了答案。

   $qry = "CALL `sp_get_codes_by_block_id`(?)";
    $result = $this->db->query($qry, $this->getBlockId());
    mysqli_next_result($this->db->conn_id);
    return $result->result_array();

答案 1 :(得分:1)

https://dev.mysql.com/doc/refman/5.0/en/c-api-multiple-queries.html说:

如果为存储过程执行CALL语句,也需要多结果处理。

即。您必须通过mysqli::more_results浏览所有结果集并释放所有结果集。

答案 2 :(得分:0)

尝试使用

while(mysqli_next_result($this->db->conn_id)) {
    if($result = mysqli_store_result($this->db->conn_id)){
        mysqli_free_result($result);
    }
}