2011-09-25 19 views
7

Im tratando de seleccionar algunos valores utilizando una cadena personalizada. A continuación se muestra el código

$this->db->from('posted'); 
    $st="infor='rent' AND (typeq='in' OR typeq='out')"; 
    $this->db->where($st); 
    $q = $this->db->get(); 

Un error de base de datos se produjo

Error Number: 1054 

Unknown column ‘infor=‘rent’’ in ‘where clause’ 
SELECT * FROM (`posted_ads`) WHERE `infor=‘rent’` AND (typeq=‘in’ 
OR typeq=‘out’) 
Filename: C:\wamp\www\parklot\system\database\DB_driver.php 
Line Number: 330 

Creo que el problema es la coz de

WHERE `infor='rent'` 

cuando manualy ejecutar este código funciona perfectamente.

WHERE infor='rent' 

cómo me libro de

`` 

porque su añaden automáticamente

Respuesta

19

Añadir un tercer parámetro a la where() y la pusieron a FALSE

$this->db->from('posted'); 
    $st="infor='rent' AND (typeq='in' OR typeq='out')"; 
    $this->db->where($st, NULL, FALSE); 
    $q = $this->db->get(); 

$this->db->where() aceptar ts un tercer parámetro opcional. Si lo configura en FALSE, CodeIgniter no intentará proteger sus nombres de campo o tabla con palos de retroceso.

CodeIgniter Documentation

+0

Si haces las cosas similares a menudo, útil para crear una función que se suman las garrapatas en torno a los nombres de tablas y campos - o escribir un simple envoltorio-función que llama 'db-> WHERE' con las señales adecuadas (con el tercer parámetro 'falso' por supuesto). – uzsolt

+0

Es una pena que esto no esté en los documentos aquí. http://ellislab.com/codeigniter/user-guide/database/active_record.html – Tyguy7

+1

@ user1253085 Está ahí. Usted debe haber pasado por alto. –

Cuestiones relacionadas