2013-05-20 54 views
1

我想通过使用具有键值的foreach在具有特定列的mysql表中进行搜索。如果条件只搜索第一行

我的代码是:

$query= "select status from temp where id='1'"; 
$result=$oDbh->($query); 
foreach($result AS $k => $v) { 
    if($v['status']=='0' OR $v['status']=='1') { 
     return true; 
    } 
    else { 
     return false; 
    } 
} 

在表的临时状态是2,0,1,1,1,0

如果condition仅搜索第一行,并且它仍然返回false,则表中有0或1。

如果有更多的信息需要比评论,请点击这里。

+2

为什么你在foreach中搜索而不是将参数添加到SQL查询? – Robert

+0

为什么不能:'从temp中选择状态,其中id ='1'和状态(0,1)'? –

+0

'where id ='1''表示在_most_表中,只会返回0或1个结果,因为id通常是_unique_标识符,因此只有其中一个存在,因此将返回最大1行。 – Zim84

回答

0

我不知道你希望它做的事情:

$query= "select status from temp where id='1'"; 
$result=$oDbh->($query); 
foreach($result AS $k => $v) { 
    if($v['status']=='0' OR $v['status']=='1') { 
     return true; 
    } 
} 

,但根据你的观察,我会说,你需要利用continue当他们不匹配。如果return那么处理将停止 - 清晰。除非我严重误解了你的观察,否则这将允许处理继续,直到你找到一个匹配或完全退出循环。

此外,因为你只是没有提出一个足够清晰的问题,所以这里几乎不可能确定还在发生什么,但是我会在这里出现一个肢体并且在循环后立即说出(即如果你到达那里没有找到匹配),你只需要这样做:

return false; 
+2

'continue'在这里没用。你可能完全忽略else子句。 – Mischa

+0

@Mischa,你100%正确,我会编辑。谢谢! –

+0

@Mischa,在这个假设中你唯一会犯错的是如果OP没有实际显示** all **的代码。尽管这将是OP的一个错误。 –