如何在Codeigniter中使用$ _GET

时间:2011-11-04 15:22:03

标签: php codeigniter

这是我网站的网址,此网址用于从数据库调用其id = 1的帖子

的http:// * 的.com /视图=项和ID = 1

我尝试使用此代码的模型

<?php
class inner_query extends CI_Model{
    // main shakli wow in slider 
    function get_current_entry(){
        $q= $this->db->query("SELECT * FROM hs_categories_cat INNER JOIN hs_news_nw ON id_cat=idcat_nw WHERE active_nw='1' AND id_nw={$id}");
        if($q->num_rows() == 1){
            foreach($q->result() as $row){
                $data[]=$row;//new array to store every results returned from database 
            }
            return $data;//return with array results
        }
    }
}

,这是我的控制器

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class entry extends CI_Controller {
    public function index()
    {
        $id=$_GET['id'];
        //load model of the current entry
        $this->load->model('inner_query');
        $data['get_current_entry'] = $this->inner_query->get_current_entry();

        $this->load->view('inner_page.php', $data);
    }

}

一旦检查此页面,我收到此错误消息

A Database Error Occurred
Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

SELECT * FROM hs_categories_cat INNER JOIN hs_news_nw ON id_cat=idcat_nw WHERE active_nw='1' AND id_nw=

Filename: E:***\system\database\DB_driver.php

Line Number: 330

5 个答案:

答案 0 :(得分:2)

您没有将$id传递给get_current_entry()函数。

在您的控制器中,将$id传递给您的模型,如下所示:

$data['get_current_entry'] = $this->inner_query->get_current_entry($id);

修改模型的get_current_entry()函数以接受$id作为参数:

function get_current_entry($id){
    // other code here...
}

答案 1 :(得分:2)

您没有在控制器中传递$idget_current_entry()功能。如何获得这个价值?

答案 2 :(得分:1)

您尚未将$ id传递给函数。您可以在index()方法中定义它,但它不会通过对象属性或方法参数传递给get_current_entry()方法,因此sql查询会在字符串中插入一个空变量,使查询成为:

...WHERE active_nw='1' AND id_nw=

导致错误。

答案 3 :(得分:1)

如果要将uri与查询字符串一起使用,则必须在application / config.php中启用查询字符串以获取更多信息,请参阅:CodeIgniter URLs

你也有选择

  

$ config ['allow_get_array'] = TRUE;   默认情况下,在最新版本的CI中为TRUE。此选项允许您使用$ _GET []数组。

另一种方式(更好)是使用网址:http://example.com/view/entry/1并通过

获取ID
  

$这 - &GT; URI-&GT;段($ n)的;   其中$ n = 3,例如。

答案 4 :(得分:0)

默认情况下,CI取消设置$ _GET,因此您可以使用$CI->uri->segment_array(); 另外,这里有一个很好的例子,说明如何创建一个替换$ _GET的辅助函数:

http://codeigniter.com/wiki/alternative_to_GET