如何使用codeigniter接收URL参数

时间:2017-11-24 18:06:57

标签: php angularjs rest codeigniter get

我正在尝试使用GETcodeigniterangularJS方法发送参数,但似乎我的函数没有收到参数。这是代码:

AngularJS:

$http.get("../controller/get_method?id=13").then(function(response) {
    $scope.data= response.data;
    //console.log(response.data);
}, function myError(response) {
    console.log(response);
});

public function get_method()
{
    header ( 'Content-Type: application/json; charset=utf-8' );
    $id= isset ($_GET ['id']) ? $_GET ['id'] : null;

    $sql = "select * from table";

    if ($id) $sql." where table.id=".$id;

    $query = $this->db->query($sql);
    echo json_encode( $query->result_array() );
}

我做错了什么?

1 个答案:

答案 0 :(得分:1)

在Codeigniter控制器功能中获取数据的方法有两种(如果您按照自己的方式做事,则为3)。

首先:

function some_controller_function($id = null) { var_dump($id) }

第二 - 除非正确处理,否则仅适用于非路由方法:

function some_controller_function() {
    $id = $this->input->get('id');
    if (is_null($id)) {
        // handle error
    }
}

此外,请不要直接将您的原始$_GET数据直接输入您的查询字符串。这只是为您打开SQL注入。使用自动转义数据的query-builder。或者通过$id = $this->db->escape_str($this->input->get('id'));

手动完成

查询构建器代码:

$query = $this->db->get_where('table', array('id' => $id);
return $query->result_array();

如果上述功能的 none 有效,那么您必须在发布的信息范围之外做其他错误。完成典型的调试路径。