2011-11-04 3 views
1

est ici une URL de mon site web, cette URL est utilisée pour appeler le poste de base de données que son id = 1

http: // * .com/view = entrée & id = 1

i essayer dans le modèle avec ce code

<?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 
     } 
    } 
} 

et voici mon contrôleur

<?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); 
    } 

} 

vérifier une fois cette page je reçois ce message d'erreur

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 

Répondre

2

Vous n'êtes pas passer $id à votre fonction get_current_entry().

Dans votre contrôleur, passez $id à votre modèle comme ceci:

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

Modifier fonction de votre modèle get_current_entry() d'accepter $id comme paramètre:

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

Vous n'êtes pas passer le $id à get_current_entry() fonctionner dans votre contrôleur. Comment est-ce censé avoir cette valeur?

1

Vous n'avez pas passé $ id dans les fonctions. Vous définissez dans votre méthode index(), mais pas Transmis par des attributs d'objet ou arguments de la méthode à votre méthode get_current_entry(), de sorte que la requête SQL insérer une variable nulle dans la chaîne, ce qui rend la requête soit:

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

provoquant l'erreur.

+0

Super, merci à tous :) – ahmedsaber111

0

Par défaut, CI Rétablit _GET $, de sorte que vous pouvez utiliser $CI->uri->segment_array(); Aussi, voici un bel exemple de la façon dont vous pouvez créer une fonction d'aide qui remplace $ _GET:

http://codeigniter.com/wiki/alternative_to_GET

1

Si vous voulez d'utiliser la uri avec la chaîne de requête, vous devez activer chaîne de requête dans votre application/config.php pour plus d'informations voir: CodeIgniter URLs

aussi, vous avez l'option

$ config ['allow_get_array'] = VRAI; qui est TRUE par défaut dans la dernière version de CI. Cette option vous permet d'utiliser le tableau $ _GET [].

L'autre façon (meilleure) est d'utiliser comme URL: http://example.com/view/entry/1 et obtenir id par

$ this-> uri-> segment ($ n); où $ n = 3 dans l'exemple.

Questions connexes