2013-04-10 29 views
7

Tôi mới tham gia CodeIgniter, tôi đã cố gắng đọc tài liệu của CI nhưng tôi vẫn không thể giải quyết được sự cố của mình, có thể ai đó ở đây có thể giúp khắc phục sự cố của tôi . Đây là mã của tôi:Lỗi: Đối tượng của lớp CI_DB_mysql_result không thể chuyển đổi thành chuỗi

Trong điều khiển của tôi

class Registration extends CI_Controller{ 

    function __construct(){ 
     parent::__construct(); 
     $this->load->model('registration_model','rmod'); 
    } 

    function ambil() { 

     $gender = $this->input->post('kelamin'); 

     $tinggi = $this->input->post('height'); 

     $berat = $this->input->post('weight'); 

     $weight = $this->rmod->ambilBeratPria($tinggi); 

     echo $weight; 
    } 

Trong mô hình của tôi

function ambilBeratPria($tinggi) { 

    $this->db->select('berat')->from('pria')->where('tinggi',$tinggi); 

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

    return $query;   
} 

Tôi muốn để có được kết quả của truy vấn của tôi trong mô hình, nhưng tôi nhận được một lỗi như thế này:

Message: Object of class CI_DB_mysql_result could not be converted to string

Có thể ai đó ở đây có thể giúp giải quyết vấn đề của tôi? Cảm ơn.

Trả lời

8

Bạn cần phải trả lại kết quả của truy vấn:

function ambilBeratPria($tinggi) { 

    $this->db->select('berat')->from('pria')->where('tinggi',$tinggi); 

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

    return $query->result(); 

} 

EDIT:

Nếu kết quả là một hàng duy nhất:

function ambilBeratPria($tinggi) { 

    $this->db->select('berat')->from('pria')->where('tinggi',$tinggi); 

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

    if ($query->num_rows() > 0) { 
     return $query->row()->berat; 
    } 
    return false; 
} 
+0

cảm ơn câu trả lời của bạn ^^ tôi đã thử theo cách đó. sự trở lại không phải là kết quả của truy vấn mà chỉ là một "mảng" văn bản xuất hiện khi tôi chạy mã ... có lẽ tôi đã sai trên mã điều khiển? –

+0

Vui lòng xem câu trả lời đã chỉnh sửa của tôi. –

+0

khi tôi cố gắng, tôi nhận được một lỗi như thế này "Đang cố gắng để có được tài sản của không đối tượng" có lẽ mã của tôi vẫn còn sai? ^^ –

2

Hiện tại bạn đang cố gắng để trực tiếp vang giá trị được trả về bởi $this->db->get();. Tuy nhiên, để sử dụng kết quả (s) từ truy vấn, bạn cần phải generate the results.

Nếu bạn tạo ra các truy vấn như thế này:

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

Sau đó, có một số tùy chọn để tạo ra kết quả. Những ví dụ này giả định rằng bạn có một cột trong (các) hàng được trả về được gọi là trọng lượng.


result() - Cho phép bạn sử dụng kết quả như là một mảng của các đối tượng .

if ($query->num_rows() > 0) //Ensure that there is at least one result 
{ 
    foreach ($query->result() as $row) //Iterate through results 
    { 
     echo $row->weight; 
    } 
} 

result_array() - Cho phép bạn sử dụng kết quả như một mảng.

if ($query->num_rows() > 0) //Ensure that there is at least one result 
{  
    foreach ($query->result_array() as $row) //Iterate through results 
    { 
     echo $row['weight']; 
    } 
} 

row() - Nếu bạn đang mong chỉ có một kết quả thì đây có thể hữu ích. Nếu truy vấn tạo ra nhiều kết quả, thì chỉ hàng đầu tiên được trả lại. Cho phép bạn sử dụng kết quả dưới dạng đối tượng .

if ($query->num_rows() > 0) 
{ 
    $row = $query->row(); 
    echo $row->weight; 
} 

row_array() - Giống như row() nhưng cho phép bạn sử dụng kết quả như một mảng.

if ($query->num_rows() > 0) 
{ 
    $row = $query->row_array(); 
    echo $row['weight']; 
} 
+0

cảm ơn bạn rất nhiều vì lời giải thích, tôi thực sự đánh giá cao nó! ^^ nó làm việc ^^ –

+0

Đừng lo, tôi rất vui vì nó đã giúp. – jleft

1

Tôi đã nhận lỗi tương tự khi tôi đang làm việc trong một dự án PHP với Code Igniter framework.In có trong lớp mô hình của tôi đã có một phương pháp gọi là getprojectnames(),

public function getprojectnames(){ 

            $result['names']=array(); 
            $this->db->select('name'); 
            $this->db->from('project'); 
            $this->db->where('status','Not Completed'); 
            $query=$this->db->get(); 
            return $query->result(); 
            } 

tôi muốn gọi hàm này trong lớp bộ điều khiển và sử dụng nó trong danh sách thả xuống trong lớp khung nhìn.

Vì vậy, trong lớp điều khiển của tôi,

$this->data['projects'] =$this->testcase_model->getprojectnames(); 
    $this->load->view("admin/_layout_main",$this->data); 

Trong lớp quan điểm của tôi,

<?php echo form_open('admin/check1'); ?> 
    <div class="row" style=" margin-left: 10px; margin-top: 15px;"> 
     <h5 class="box-title">Projects List &nbsp;&nbsp;&nbsp; : &nbsp; <?    php echo form_dropdown('projects', $projects, 'id'); ?> </h5> 
     <div> 
      <input type="submit" style="width:200px;" class="btn btn-block btn-primary" value="Show Project TestCase Status" /></div> 
    </div> 
    <?php echo form_close();?> 

Khi tôi chạy này, tôi đã nhận lỗi, nói CI_DB_mysql_result không thể chuyển đổi thành String.So tôi giải quyết này vấn đề bằng cách thay đổi mã của tôi trong lớp mô hình như sau,

public function getprojectnames(){ 

            $result['names']=array(); 
            $this->db->select('name'); 
            $this->db->from('project'); 
            $this->db->where('status','Not Completed'); 
            $query=$this->db->get(); 

            foreach ($query->result() as $row) 
             { 
              array_push($result,$row->name); 
             } 
            return $result; 

             } 

Sau đó, chương trình của tôi orked tốt.

Các vấn đề liên quan