2013-08-21 6 views
0

S'il vous plaît me aider:Quelqu'un peut-il me aider à réécrire cette chaîne de requête pour CodeIgniter enregistrement actif

SELECT * 
FROM `product` 
WHERE `vi_name` LIKE '%product%' 
OR `en_name` LIKE '%product%' 
AND `parent_id` != 0 

J'ai écrit mon propre code, mais un peu comment il compte encore des lignes ont PARENT_ID = 0

function get_product_by_search_slug($slug) { 
     $this -> db -> from('product'); 
     $this -> db -> like('vi_name', $slug); 
     $this -> db -> or_like('en_name', $slug); 
     $this -> db -> where_not_in('parent_id', 0); 
     $query = $this -> db -> get(); 
     return $query -> result(); 
} 

I a obtenu une solution et il fonctionne très bien, mais de toute façon je ne satisfais pas tout à fait avec elle:

function get_product_by_search_slug($slug) { 
     $this -> db -> select("* FROM `product` WHERE `vi_name` LIKE '%". $slug ."%' OR `en_name` LIKE '%". $slug ."%' AND `parent_id` != 0"); 
     $query = $this -> db -> get(); 
     return $query -> result(); 
} 
+0

Copie possible: http://stackoverflow.com/q/6156979/1618257 –

+0

Désolé mais non ... – user2657778

+0

"AND" parent_id'! = 0 "..'! = 'Est incorrect pour SQL. Utilisez '<>' ou 'NOT IN' –

Répondre

0

vous pouvez essayer cette

where('parent_id !=','0') 

s'il vous plaît laissez-moi savoir si vous rencontrez un problème

+0

Désolé, mais cela ne fonctionnera pas. – user2657778

0

Essayez celui

$this->db->like('vi_name', $slug) 
     ->or_like('en_name', $slug) 
     ->where('parent_id <>', 0); 
0
$slugQ = $this->db->escape_like_str($slug); 
$this->db 
    ->select('*') 
    ->from('product') 
    ->where("(vi_name like '%$slugQ%' OR en_name like '%$slugQ%')", NULL, FALSE) 
    ->where('parent_id !=', 0) 
    ->get() 
    ->result(); 

Dans mon exemple, j'ai Merly échappé à la limace pour la recherche correcte de MySQL, vous aurez avoir à faire quelques contrôles supplémentaires vous-même.

Questions connexes