2010-03-09 22 views
12

Model sorgusunu json_encode ile json'a dönüştürmek istiyorum, işe yaramıyor. Ama sıradan bir dizi ile yapar.Kod yazıcısı sorguyu json'a dönüştürüyor musunuz?

$arr = array("one", "two", "three"); 
     $data["json"] = json_encode($arr); 
Çıktı

<?php echo "var arr=".$json.";"; ?> 
var arr=["one","two","three"]; 

Ama dönüştürmeye çalıştığınızda bir sorgu CodeIgniter bir hata atar. Bununla ne var?

bir PHP hata önem karşılaşıldı: Bu hata mesajı Uyarı mesaj: [json] (php_json_encode) türü ve bir desteklenmemiş, boş

ve dönüştürülmüş "terimi kodlanmış "sonuç = Yani modeli yöntemi şu şekildedir:

{"conn_id":null,"result_id":null,"result_array":[],"result_object":[],"current_row":0,"num_rows":9,"row_data":null} 

bu

gibi yapmaya çalışacağım

Bu arada, model ve yöntem json_encode olmadan yaptığımda gayet iyi çalışıyor.

Hatalı bir şekilde yanlış yapıyorum ama soru nedir?

+0

sen çalışmıyor kod gönderebilir miyim? Sorgunuzu neden json'a dönüştürmek istediğinizi anlamıyorum. Ortaya çıkan verileri json'a dönüştürmen gerekmiyor mu? –

+0

Bir şey bir hata attığında, hatayı bizimle paylaşmak isteyebilirsiniz. ;-) –

+0

Hata mesajını gönderir misiniz? – Pedro

cevap

22

Sonuç dizisi yerine CodeIgniter veritabanı sonucu nesnesini kodlamaya çalışıyorsunuz gibi görünüyor. Veritabanı sonuç nesnesi, imleç etrafında sonuç kümesine bir sarıcı görevi görür. Sonuç dizisini sonuç nesnesinden almalı ve sonra bunu kodlamalı.

function SelectAll() 
{ 
    $sql = 'SELECT * FROM posts'; 
    // Return the result object 
    return $this->db->query($sql); 
} 

Daha böyle olmalı:

function SelectAll() 
{ 
    $sql = 'SELECT * FROM posts'; 
    $query = $this->db->query($sql); 
    // Fetch the result array from the result object and return it 
    return $query->result(); 
} 

Bu JSON kodlamak nesneleri dizisi döndürür

Modeliniz kodu böyle bir şey gibi görünüyor.

Sonuç nesnesini kodlamaya çalışırken bir hata alıyor olmanızın nedeni, JSON'da kodlanamayan bir resource üye değişkenine sahip olmasıdır. Bu kaynak değişkeni aslında sonuç kümesindeki imleçtir.

  $json_data = $this->home_model->home_getall(); 
      $arr = array(); 
      foreach ($json_data as $results) { 
      $arr[] = array(
        'id' => $results->id, 
        'text' => $results->name 
        ); 
      } 
     //save data mysql data in json encode format  
      $data['select2data'] = json_encode($arr); 
+0

Çok teşekkürler. Codeigniter için yeni biriyim, API'sini öğrenmek için pek bir şey kalmadı, ama şimdi daha da eğlenceli. – marko

+0

Sorun değil. Yardım etmek için sevindim :-) –

1
public function lastActivity() 
{ 
    header("Content-Type: application/json"); 
    $this->db->select('*'); 
    $this->db->from('table_name'); 
    $query = $this->db->get(); 

    return json_encode($query->result()); 
} 
0

çalışma çözümdür son CI Standart gereğince
{"post":[{"id":"5","name":"name_of_post"}]} 
0

Modelleri (Post):

function SelectAll() 
{ 
    $this->db->select('*'); 
    $this->db->from('post'); 
    $query = $this->db->get(); 
    return $query; 
} 

Kontrolörler:

$data['post'] = $this->post->SelectAll()->result_array(); 
echo json_encode($data); 

Sonuç:

İşte
1

Denetleyiciniz dosyasında şu kodu kullanın:

$this->output->set_content_type('application/json')->set_output(json_encode($arr)); 
İlgili konular