类CI_DB_mysqli_result的对象无法转换为字符串

时间:2015-05-15 08:47:12

标签: php mysql string codeigniter object

这是我的代码:

class Mymodel extends CI_Model {

public function getinstitution()
    {
    $course = "programming";
    $location = "jakarta";
    $price = "price2";

    $data = $this->db->query('SELECT * FROM coursesplace WHERE 1=1');

    if($course)     $data .= "AND course=\"$course\" ";
    if($location)   $data .= "AND location=\"$location\" ";
    if($price)      $data .= "AND price=\"$price\"";

    return $data->result_array();
    }
}

我想根据三个变量(课程,位置和价格)过滤计算机课程名称,并使用字符串数据类型。我有“编程”,“jakarta”和“price2”等。

但是,我有这个错误:

遇到PHP错误

严重程度:4096

消息:类CI_DB_mysqli_result的对象无法转换为字符串

文件名:models / mymodel.php

行号:14

--->第14行是:

if($course)     $data .= "AND course=\"$course\" ";

和其他错误:

遇到PHP错误

严重性:错误

消息:在非对象上调用成员函数result_array()

文件名:models / mymodel.php

行号:18

--->第18行是:

return $data->result_array();

我该怎么办?谢谢你的回答!

3 个答案:

答案 0 :(得分:1)

$ data是一个你不能将字符串连接到对象的对象。

$query = "SELECT * FROM coursesplace WHERE 1=1"


    if(isset($course))     $query .= " AND course=\"$course\" ";
    if(isset($location))   $query .= " AND location=\"$location\" ";
    if(isset($price))      $query .= " AND price=\"$price\" ";

 $data = $this->db->query($query);

这会有所帮助。 我已经采取了一个变量$ query并为其分配字符串 根据条件字符串连接。 最后,最终查询将提供给$ this-> db-> query

答案 1 :(得分:1)

你可以简单地删除引号

$data = 'SELECT * FROM coursesplace WHERE 1=1';

if ($course)
    $data .= " AND course='$course' ";
if ($location)
    $data .= " AND location='$location' ";
if ($price)
    $data .= " AND price='$price'";

$result = $this->db->query($data);
return $result->result_array();

Active Records ..

public function getinstitution() {
    $course = "programming";
    $location = "jakarta";
    $price = "price2";

    $this->db->select('*');
    $this->db->from('coursesplace');
    $this->db->where('1 = 1');
    if ($course != '') {
        $this->db->where('course', $course);
    }
    if ($location != '') {
        $this->db->where('location', $location);
    }
    if ($price != '') {
        $this->db->where('price', $price);
    }
    $data = $this->db->get()->result_array();
    return $data;
}

答案 2 :(得分:0)

您的问题是您正在运行查询,然后尝试修改查询。

您应该将“SELECT * FROM coursesplace WHERE 1 = 1”添加到$ data字符串中,如下所示;

$data = 'SELECT * FROM coursesplace WHERE 1=1';
// Then ammend the $data
if($course)     $data .= "AND course=\"$course\" ";
if($location)   $data .= "AND location=\"$location\" ";
if($price)      $data .= "AND price=\"$price\"";

// Now run the query
$query = $this->db->query($data);

return $query->result_array();