用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1943|回复: 2
收起左侧

[数据库] CI框架调用存储过程返回多个结果集如何编写?

[复制链接]
发表于 2018-9-4 11:45:30 | 显示全部楼层 |阅读模式
已知php调用存储过程返回单个结果集\多个结果集以及ci框架返回的单个结果集;
新手不懂如果在ci模型中使用php函数,以致无法实现调用返回的多个结果集

//ci调用存储过程返回单个结果集
//控制器
public function call()
    {   
        $sn = '18071610194745515';
        $res = $this->order_model->getOrderById($sn);
        echo "<pre>";
        print_r($res);
    }
//模型
//调用存储过程 ---返回二维数据结果集
    public function getOrderById($data)
    {
        $sql = "call order_name({$data})";//定义调用的存储过程名称并传入参数
        $query = $this->db->query($sql);//执行sql
        $result = $query->result_array();//获取数据
        $query ->free_result();//释放结果集
        return $result;
    }




//php调用存储过程返回单个结果集,多个结果集
//**************************************************//公共部分
$db = new mysqli('127.0.0.1','root','root','ztong');  
if (mysqli_connect_errno()){  
    $this->message('数据库连接失败');  
}else{
        //echo "连接成功!";
}  
$db->query("SET NAMES UTF8");
$param = '18071610194745515';//传入的参数
$rows = array();


//获取返回的单个结果集
$sql = "call order_name($param)";
$query = $db->real_query($sql);
$result = $db->store_result();//检索返回的结果
$row = $result->fetch_assoc();//获取返回的数据
echo "<pre>";
var_dump($row);


//返回多个结果集
$sql = "call order_names($param)";
if ($query = $db->multi_query($sql))//执行多个sql语句
{
    do
    {
        // 存储第一个结果集
        if ($result=$db->store_result())//检索数据
        {
            while ($row=$result->fetch_assoc())//获取结果集
            {
                $rows[] = $row;
            }
        }else{
                break;
        }   
    } while ($db->next_result());//对于多个查询,用此准备下一个结果集
}
//****************************************************************************
 楼主| 发表于 2018-9-26 20:16:59 | 显示全部楼层
存储过程获取多个结果集,有没有ci写法
 楼主| 发表于 2018-9-27 19:02:43 | 显示全部楼层
ci使用存储过程返回多个结果集怎么获取?

本版积分规则