在foreach循环中跳过结果 - pdo

时间:2016-05-31 16:29:58

标签: php mysql pdo

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

$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
    //}
} 

3 个答案:

答案 0 :(得分:3)

由于几个原因,在数据库级别进行过滤效率更高

  • 你并没有浪费网络资源通过网络传输不需要的数据
  • 使用索引良好的表格,DBMS将比使用结果数据更快地进行搜索

正如评论和其他答案中所指出的,您可以使用LIKE运算符

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

答案 1 :(得分:1)

你可以使用php函数strstr()完成你想要的工作,如下所示:

$all = array(
            'name' => array('Thanga','Kima','Zara'),
            'email'=> array('thanga@gmail.com','kima@gmail.com','zara@sample.com.ru')
            );

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;

答案 2 :(得分:-1)

只需更改第一行......

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