在CodeIgniter中调用未定义的方法CI_DB_mysqli_result :: fetch_assoc()

时间:2017-07-05 08:47:49

标签: php codeigniter mysqli

我有以下功能

function getQuery($sql,$returnType = ''){
    $data = array();
    $result = $this->db->query($sql);
    if($result){
        switch($returnType){
            case 'count':
                $data = $result->num_rows;
                break;
            case 'single':
                $data = $result->fetch_assoc();  //Line 55
                break;
            default:
                if($result->num_rows > 0){
                    while($row = $result->fetch_assoc()){
                        $data[] = $row;
                    }
                }
        }
    }
    if(!empty($data)) {
        return $data;
    }
    return false;
}

执行此方法后,返回错误

  

输入:错误

     

消息:调用未定义的方法CI_DB_mysqli_result :: fetch_assoc()

     

行号:55

我无法理解错误显示的原因。请帮忙!!!

2 个答案:

答案 0 :(得分:1)

fetch_assoc()不是Codeignetor查询构建器的方法,它是mysqli的actaullay方法,但您使用的是“Codeignetor查询构建器”

用于单行使用,如

$query = $this->db->query("YOUR QUERY");

$row = $query->row();

if (isset($row))
{
        echo $row->title;
        echo $row->name;
        echo $row->body;
}

表示多行:

$query = $this->db->query("YOUR QUERY");

foreach ($query->result_array() as $row)
{
        echo $row['title'];
        echo $row['name'];
        echo $row['body'];
}

您必须使用以下代码

function getQuery($sql,$returnType = ''){
    $data = array();
    $result = $this->db->query($sql);
    if($result){
        switch($returnType){
            case 'count':
                $data = $result->num_rows();
                break;
            case 'single':
                $data = $result->row_array(); // return result as array
                 or
                $data = $result->row(); //  return result as object
                break;
            default:
                $data = $result->result_array(); // result in array
                or
                $data =  $result->result(); // return a objects
        }
    }
    if(!empty($data)) {
        return $data;
    }
    return false;
}

答案 1 :(得分:0)

您可以针对您的问题尝试此解决方案:

function getQuery($sql,$returnType = ''){
    $data = array();
    $result = $this->db->query($sql);
    if($result){
        switch($returnType){
            case 'count':
                $data = $result->num_rows;
                break;
            case 'single':
                $data = $result->row();  // CodeIgniter return single row 
                break;
            default:
                if($result->num_rows > 0){
                    $data = $result->result(); // CodeIgniter return result object and you can set result_array() get array list
                }
        }
    }
    if(!empty($data)) {
        return $data;
    }
    return false;
}