Как использовать $ _GET в Codeigniter - PullRequest
1 голос
/ 04 ноября 2011

вот URL моего сайта, этот URL используется для вызова поста из базы данных с его id = 1

http://*.com/?view=entry&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 ]

2 голосов
/ 04 ноября 2011

Вы не передаете функцию $id в get_current_entry() в вашем контроллере. Как получить это значение?

2 голосов
/ 04 ноября 2011

Вы не передаете $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 голос
/ 04 ноября 2011

Если вы хотите использовать URI со строкой запроса, вы должны включить строку запроса в вашем application / config.php для получения дополнительной информации, см .: CodeIgniter URL

Также у вас есть опция

$ config ['allow_get_array'] = TRUE;который является ИСТИННЫМ по умолчанию в последней версии CI.Эта опция позволяет вам использовать массив $ _GET [].

Другой способ (лучше) - использовать url наподобие: http://example.com/view/entry/1 и получить идентификатор по

$ this-> uri-> сегмент ($ п);где $ n = 3 в примере.

1 голос
/ 04 ноября 2011

Вы не передали $ id в функции. Вы определяете его в вашем index() методе, но он не передается через атрибуты объекта или аргументы метода в ваш метод get_current_entry (), поэтому запрос sql вставит в строку пустую переменную, сделав запрос:

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

вызывает ошибку.

0 голосов
/ 04 ноября 2011

По умолчанию CI сбрасывает $ _GET, поэтому вы можете использовать $CI->uri->segment_array(); Также, вот хороший пример того, как вы можете создать вспомогательную функцию, которая заменяет $ _GET:

http://codeigniter.com/wiki/alternative_to_GET

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...