2016-05-31 171 views
0

在我的数据库中存储电子邮件地址。在foreach循环中,如何跳过所有具有@sample.com.ru的电子邮件地址?在foreach循环中跳过结果 - pdo

$sql = "SELECT * FROM myMovieCustomers"; 
$stmt = $pdo->prepare($sql); 
$stmt->execute(); 
$result = $stmt->fetchAll(); 

foreach ($result as $row) { 
    //skip if $row['email'] contains @sample.com.ru{ 
     //do someting with these 
    //} 
} 
+4

'strpos()'+'continue;' – Rizier123

+3

您可以将其添加到您的查询的where子句中,比如..'其中电子邮件地址像'%@ sample.com.ru'' –

+0

@kamalpal谢谢。但是,如果将其添加到“WHERE”后面,它将会选择它们。我需要跳过有'... @ sample.com.ru'的行... – Becky

回答

3

它更有效地做在数据库级滤波有两个原因

  • 你不浪费网络资源通过电报
  • 传输不需要的数据与一个良好的索引表,数据库管理系统将更快地进行搜索比PHP将与结果达TA

正如指出的评价和其他的答案,你可以使用LIKE操作

$sql = "SELECT * FROM myMovieCustomers WHERE email NOT LIKE '%@sample.com.ru'"; 
-1

只要改变第一线......

$sql = "SELECT * FROM myMovieCustomers WHERE email NOT LIKE'%@sample.com.ru'"; 
+0

你缺少结束单引号 –

+0

@barry:单引号前最后一个双引号丢失:)它应该像''%@sample.com.ru'''' –

1

你可以达到你想要的东西通过使用PHP函数strstr()象下面这样:

$all = array(
      'name' => array('Thanga','Kima','Zara'), 
      'email'=> array('[email protected]','[email protected]','[email protected]') 
      ); 

echo '<pre>'; 
print_r($all); 
foreach($all as $key=>$val): 
    foreach ($val as $k=>$v): 
     if(strstr($v,'@')=='@sample.com.ru'){ 
     }else{ 
      echo $v; 
     } 
    endforeach; 
endforeach; 
+0

为什么不把'!='放在你的**如果**语句而不是空白的== ==? – CarlosCarucce