2015-05-15 2 views
3

вот мой код:Объект класса CI_DB_mysqli_result не может быть преобразован в строку

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(); 
    } 
} 

Я хочу, чтобы фильтровать компьютерный курс мест на основе трех переменных (конечно, местоположение и цена), с типом данных строки. Например, у меня есть «программирование», «джакарта» и «цена2».

Но, тогда я эту ошибку:

PHP-ошибка была обнаружена

критичности: 4096

Сообщение: Объект класса CI_DB_mysqli_result не может быть преобразован в строку

Filename: models/mymodel.p л.с.

Номер строки: 14

---> Линия 14:

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

И другая ошибка:

PHP-ошибка была обнаружена

Значимость: ошибка

сообщение: вызов функции члена result_array() на не-объект

Имя файла: модели Номер/mymodel.php

Line: 18

- -> Линия 18:

return $data->result_array(); 

Что мне делать? Спасибо за ответ !

+1

Что вы имеете в виду 1 = 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(); 

активных записей ..

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; 
} 
+0

это работает! Спасибо большое! –

+0

Добро пожаловать. Рад помочь @GrahaPramudita –

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

0

Ваша проблема в том, что вы выполняете запрос, а затем пытаетесь изменить исходный запрос.

Вы должны добавить «SELECT * FROM coursesplace WHERE 1 = 1» в строку данных $, например:

$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(); 
Смежные вопросы