在codeigniter中的一个表中检索具有相同名称的多个数据

时间:2013-07-09 07:35:03

标签: php codeigniter

function search_review($input, $serviceName){
        $ipJson = json_encode($input);
        $this->db->select('*');
        $this->db->from('reviews');
        $this->db->where('reviewee_name', $input['reviewee_name']);
        $query = $this->db->get();
        $result = $query->result();
        if (!empty($result)) {
        foreach ($query->result() as $row)
        {
            $data['reviewer_id'] = $row->reviewer_id;
            $data['reviewee_name'] = $row->reviewee_name;
            $data['tournament_played_c_s'] = $row->tournament_played_c_s;
        }
            $data['message'] = 'Review details retrieved successfully.';
            $status = $this->clamo_lib->return_status('success', $serviceName, $data, $ipJson);
        } else {
            $data['message'] = 'Unable to retrieve review details.';
            $status = $this->clamo_lib->return_status('error', $serviceName, $data, $ipJson);
        }
        return $status;
    }

这是我的代码,我可以检索具有相同名称的单行数据。例如reviewee_name =“sangeetha”表示我需要显示名为sangeetha的详细信息。但现在单行数据只能得到我需要做的事情吗?

2 个答案:

答案 0 :(得分:0)

<?php

//don't overwrite the array values
function search_review($input, $serviceName){

    $data = array();

    $ipJson = json_encode($input);
    $this->db->select('*');
    $this->db->from('reviews');
    $this->db->where('reviewee_name', $input['reviewee_name']);
    $query = $this->db->get();
    $result = $query->result();
    if (!empty($result)) {
        foreach ($query->result() as $row)
        {
            //here you're overwriting the values
            $data[]['reviewer_id'] = $row->reviewer_id;
            $data[]['reviewee_name'] = $row->reviewee_name;
            $data[]['tournament_played_c_s'] = $row->tournament_played_c_s;
        }
        $data['message'] = 'Review details retrieved successfully.';
        $status = $this->clamo_lib->return_status('success', $serviceName, $data, $ipJson);
    } else {
        $data['message'] = 'Unable to retrieve review details.';
        $status = $this->clamo_lib->return_status('error', $serviceName, $data, $ipJson);
    }
    return $status;
}

答案 1 :(得分:0)

看着你的代码..我可以看到你正在替换数据数组中的相同键..所以这就是问题..

试试这个

..
foreach ($query->result() as $row)
{
        $data[]['reviewer_id'] = $row->reviewer_id;
        $data[]['reviewee_name'] = $row->reviewee_name;
        $data[]['tournament_played_c_s'] = $row->tournament_played_c_s;
 }
...

这不会取代键。所以$ data将有不同的结构(二维数组)所以在显示它时要小心..使用echo "<pre>";print_r($data);检查$ data结构