2016-05-31 214 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