2013-03-02 1 views
0

Je souhaite imprimer une instruction SQL ayant échoué dans CodeIgniter. Lors de mon premier essai, j'ai utilisé un bloc try/catch ci-dessous qui imprime db-> last_query(). Cependant, comme vous pouvez le voir dans le journal, l'instruction SQL n'est pas imprimée. Qu'est-ce que je fais mal?Impression d'une instruction SQL ayant échoué dans Codeigniter

public function get($limit = NULL, $offset = NULL, $sort = NULL, $search = NULL) 
{ 
    try { 
     if ($limit !== NULL) $limit = (int) $limit; 
     if ($offset !== NULL) $offset = (int) $offset; 
     if (is_array($sort)) { 
      foreach ($sort as $field => $order) { 
       $this->db->order_by($field, $order); 
      } 
     } 
     if (is_array($search)) { 
      foreach ($search as $field => $match) { 
       $this->db->where($field, $match); 
      } 
     } 
     $this->db->select($this->select_fields); 
     $query = $this->db->get($this->table_name, $limit, $offset); 

     // Set the results 
     $this->last_query = $this->db->last_query();  
     $this->num_rows = $query->num_rows(); 
     $this->result_array = $query->result_array(); 
     $this->db_result = $query; 
     $this->error_number = $this->db->_error_number(); 
     $this->error_message = $this->db->_error_message(); 
    } catch(Exception $e) { 
     log_message('error',$e->getMessage()); 
     log_message('error',$this->db->last_query()); 
     $this->error_number = 500;  
    } 
} 

L'erreur que je reçois est:

DEBUG - 2013-03-02 15:16:50 --> DB Transaction Failure 
ERROR - 2013-03-02 15:16:50 --> Query error: Unknown column 'template' in 'where clause' 
+0

Je pense que cela pourrait vous aider à: http: // stackoverflow.com/a/15860744/1199612 –

Répondre

2

La ligne retourne la dernière requête $ this-> db-> last_query() qui a été exécuté. Mais votre fichier journal SQL nous montre que vous avez une erreur dans votre requête SQL.

Votre requête n'a donc pas été exécutée. La ligne last_query() ne peut rien retourner.

Query error: Unknown column 'template' in 'where clause' 

Avez-vous une colonne modèle dans votre tableau?

+0

Guicara, merci pour le commentaire. Je suppose que j'essaie de consigner l'instruction SQL complète qui n'a pas pu s'exécuter. Y a-t-il un moyen de faire cela? – dutchman711

+0

Vérifiez si vous avez "$ db ['default'] ['db_debug'] = TRUE;" dans votre fichier de configuration /config/database.php (TRUE par défaut). Si c'est sur TRUE, les erreurs de la base de données seront affichées ... avec la requête SQL! – Guicara

+0

Salut, merci pour l'astuce, mais ce drapeau est déjà réglé sur TRUE ... – dutchman711

0

-Solution simple. -si vous utilisez Firefox. que Ibloq firbug et l'activer, et dans la console Firebug vous pouvez voir toute chose liée à votre demande, comme - Votre demande http - après/obtenir des données - réponses, etc.

Questions connexes