2011-09-25 17 views
7

Sto cercando di selezionare alcuni valori utilizzando una stringa personalizzata. Di seguito è riportato il mio codice

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

un errore di database verificato

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 

Credo che il problema è coz di

WHERE `infor='rent'` 

quando ho manualy eseguo questo codice funziona perfettamente.

WHERE infor='rent' 

come faccio a sbarazzarsi di

`` 

perché la sua aggiunti automaticamente

risposta

19

aggiungere un terzo parametro al where() e impostarlo in 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() Accep ts un terzo parametro opzionale. Se lo si imposta su FALSE, CodeIgniter non tenterà di proteggere il campo oi nomi delle tabelle con i backtick.

CodeIgniter Documentation

+0

Se si fanno le cose simili, spesso, utile per creare una funzione che aggiunge zecche intorno i nomi delle tabelle e campi - o di scrivere un semplice involucro-funzione che chiama 'DB-> WHERE' con le zecche adeguati (con il terzo parametro 'false' ovviamente). – uzsolt

+0

È un peccato che questo non sia presente nei documenti qui. http://ellislab.com/codeigniter/user-guide/database/active_record.html – Tyguy7

+1

@ user1253085 È lì dentro. Devi essere trascurato. –

Problemi correlati