使用CodeIgniter写入JSON文件

时间:2015-06-09 23:18:57

标签: php mysql json codeigniter

我是php,mySql和CodeIgniter的新手。我正在尝试从mySql文件中读取并使用CodeIgniter将读取的数据写入JSON文件。我可以从mySql中读取数据并查看它并可以创建JSON文件,但是我已经完全陷入了我在互联网上阅读的所有不同信息。我一整夜都在寻找我写入JSON的代码,即控制器,视图,模型等。

这是“European_countries_model.php”

// Model to access database
class European_countries_model extends CI_Model {

    public function __construct()
    {
        $this->load->database();

    }

    public function get_countries()
    {
        // get data from table "european_countries"
        $query = $this->db->get('european_countries');
            return $query->result();
    }

}

这是我的观点有效(设置为查看数据库是否正常):

<?php

// TEST - display data
echo "Euopean Countries<br/>";

foreach ($countries as $country){
    echo $country->euro_id."  ".$country->title."  ".$country->flag_name."  ".$country->population."  ".$country->avg_annual_growth."  ".$country->date."<br/>";
}

?>

这是我的控制员“European_countries.php”

<?php

// European countries controller
class European_countries extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->model('European_countries_model');
        // file helper contains functions that assist in working with files
        $this->load->helper('file');
        $this->load->database();
    }

    // pass all countries from model to view????
    public function index()
    {
        $data['countries'] = $this->European_countries_model->get_countries();
        //$this->load->view('european_countries_view', $data);

        $response = array();
        $posts = array();
        foreach ($countries as $country) 
        { 
            $title=$country['euro_id']; 
            $flag=$country['flag_name']; 
            $population=$country['population'];
            $avg_annual_gcountryth=$country['avg_annual_gcountryth'];
            $date=$country['date'];

            $posts[] = array('title'=> $title, 
                'flag_name'=> $flag_name,
                'population'=>$population,
                'avg_annual_gcountryth'=>$avg_annual_gcountryth,
                'date'=>$date
                );
        } 
        $response['posts'] = $posts;

        $fp = fopen('./eur_countries_array.json', 'w');
        fwrite($fp, json_encode($response));


/*  
        if ( ! write_file('./eur_countries_array.json', $arr))
        {
            echo 'Unable to write the file';
        }
        else
        {
            echo 'file written';
        }   
*/
    }
}

?>

我想我已经从跟踪php到mySql再到CodeIgniter再次回到这么多次,我已经把它搞砸了。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

您正在将countries对象循环为数组。看看这个

<?php
class European_countries extends CI_Controller {

public function __construct()
{
    parent::__construct();
    $this->load->model('European_countries_model');
    $this->load->helper('file');
    $this->load->database();
}

public function index()
{
    $countries = $this->European_countries_model->get_countries(); 
    $data['countries'] = $countries;

    $response = array();
    $posts = array();
    foreach ($countries as $country) 
    { 
        $posts[] = array(
            "title"                 =>  $country->euro_id,
            "flag"                  =>  $country->flag_name,
            "population"            =>  $country->population,
            "avg_annual_gcountryth" =>  $country->avg_annual_gcountryth,
            "date"                  =>  $country->date
        );
    } 
    $response['posts'] = $posts;
    echo json_encode($response,TRUE);

    //If the json is correct, you can then write the file and load the view

    // $fp = fopen('./eur_countries_array.json', 'w');
    // fwrite($fp, json_encode($response));

    // if ( ! write_file('./eur_countries_array.json', $arr))
    // {
    //     echo 'Unable to write the file';
    // }
    // else
    // {
    //     echo 'file written';
    // }   
    // $this->load->view('european_countries_view', $data);
}}?>