2012-07-27 57 views
1

是CI中或PHP能够扩展MySQL的声明。例如。如果我有$query1。我可以在另一个$this->db->query()实例添加到$query1扩展MySQL的声明

$query1 = this->db->query("SELECT * FROM users WHERE a = b"); 

$query1(or 2) = $this->db->query("AND b = c"); 
+1

@SnowBlind:我认为他试图在他的表现的例子问题... – 2012-07-27 20:55:55

+0

@火箭嗯,那么工作呢? – 2012-07-27 20:59:00

+0

不,它没有工作 – 2012-07-27 21:31:36

回答

5

把你的陈述在var和扩展字符串,如果需要:

$strStatement = "SELECT * FROM users WHERE a = b"; 

if (/* whatever */) 
{ 
    $strStatement .= " AND b = c"; 
} 

$objResult = $this->db->query($strStatement); 
+0

不错。谢谢你的信息 – 2012-07-27 21:31:24

+0

@MichaelGrigsby我不知道你为什么接受这个答案,因为它没有利用* codeigniter中的任何*高级功能。有一些已经写好的类可以帮助你准确地完成你想要做的事情,而不仅仅是这一点。请参阅下面的答案,并阅读文档... ** – orourkek 2012-07-27 23:11:18

+0

我不喜欢捣乱CodeIgniter的MySQL方法,主要是因为我不能使用NOW()函数。谈到Ci时,我不会使用这些或模型 – 2012-07-28 02:35:01

0

check out the documentation。这是可以实现(作为一个例子)与:

$this->db->where('a', 'b'); 
if($condition) 
{ 
    $this->db->where('b', 'c'); 
} 
$this->db->get('users'); //implicitly runs a "SELECT *" 
+0

谁低估了护理评论为什么?这是一种完全有效(更高效)的方式来完成OP所要求的... – orourkek 2012-07-27 23:08:14

+0

为什么你认为这样更高效?你不觉得,通过调用3个对象方法而不是只调用一个方法,你会有更多的开销吗?但你是对的,低估这个答案是'错误的'。 (_wasnt我btw_) – Raisch 2012-07-28 10:13:21

+0

这是我,我同意@Raisch。反对票是因为接受的答案更快,只能调用一次对象。你正在呼叫三次对象。这很好,以避免这样的事情获得世代时间... – 2012-07-30 13:55:39