这是我的代码:
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();
我该怎么办?谢谢你的回答!
答案 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();