REST 应用程序 + codeigniter + 数据库

Posted

技术标签:

【中文标题】REST 应用程序 + codeigniter + 数据库【英文标题】:REST app + codeigniter + database 【发布时间】:2015-08-21 07:45:43 【问题描述】:

我做了一个 ,如下:https://github.com/chriskacerguis/codeigniter-restserver,效果很好,很棒。

现在我的 json 文件正在获取静态数据,我如何从数据库中获取数据?

我写了一个文件,我可以从数据库中获取数据,但是我不知道如何从数据库中获取 json 中的数据,你们能帮帮我吗?谢谢。

该文件返回给我的静态 json,完美运行,我想从数据库中获取数据。

/controllers/hello.php

<?php
include (APPPATH.'/libraries/REST_Controller.php');
class Hello extends REST_Controller 
    function world_get()
        $data = new stdClass();
        $data->name = 'Mark ';
        $this->response($data, 200);
    

下面的这些文件我可以从数据库中获取数据,但是在 html 中,我如何获取 json 格式的数据?

/controllers/site.php

<?php

Class Site extends CI_Controller 
    function __construct()
    
        // Call the Model constructor
        parent::__construct();
    

    function index()

        $this->load->model('data_model');
        $data['rows'] = $this->data_model->getAll();
        $this->load->view('home', $data);
    


/models/data_model.php

<?php 

class Data_model extends CI_Model 
    function getAll()
        $q  = $this->db->query("SELECT * from data");
        if($q->num_rows() > 0) 
            foreach ($q->result() as $row) 
                $data [] = $row;
            
            return $data;
        
    

views/home.php

<htmL>

    <body>


        <pre>

        <?php foreach ($rows as $r)
        
            echo '<h1>' . $r->title . '</h1>';
        
        ?>
    </pre>

        <?php foreach ($rows as $r) : ?>


            <h1> <?php echo $r->author; ?></h1>
            <h1> <?php echo $r->contents; ?></h1>

        <?php endforeach; ?>
    </body>


</htmL>

【问题讨论】:

【参考方案1】:

你正在做API。返回数据你不需要调用view。你可以这样做

function index()

    $this->load->model('data_model');
    $data = $this->data_model->getAll();
    $this->response($data, 200);

你的模型函数没问题,但你可以让它变得简单。

function getAll()

    return $this->db->get('data')->result();    

【讨论】:

【参考方案2】:

只需在您的控制器中使用json_encode 并在您的模型文件中进行少量更改

控制器

function index()
     $this->load->model('data_model');
     $result= $this->data_model->getAll();// change this line
     $data['rows']= json_encode($result);// add this line

    $this->load->view('home', $data);


型号

<?php 

class Data_model extends CI_Model 
    function getAll()
        $q  = $this->db->query("SELECT * from data");
        if($q->num_rows() > 0) 
          return $q->result();
        else
          return false;
         
    

【讨论】:

感谢您的帮助,我做了更改,但出现了错误:pastebin.com/yaxBRemA 对不起那个:pastebin.com/yaxBREMA 请检查您的查询是否有表数据有记录?? 让我们continue this discussion in chat.

以上是关于REST 应用程序 + codeigniter + 数据库的主要内容,如果未能解决你的问题,请参考以下文章

在 CodeIgniter 中使用 REST API 时如何定义我的函数?

CodeIgniter REST API 库 Ajax PUT 抛出 403 Forbidden

带有 Backbone、DELETE 和 PUT 请求的 CodeIgniter Rest Server 返回 404

如何将带有数据的http标头发送到rest Api codeigniter?

是否有一个带有/ORM(Laravel、Cake、Codeigniter)的 PHP 框架,我们可以在其中覆盖数据交互以从 rest api 中获取数据?

Phonegap错误:401未经授权 - 在Phonegap中使用基本身份验证的Rest API