2017-02-11 134 views
-1

我想检查我的表中是否存在$_POST['email']的值。如果不是,则应将新值添加到数据库中。检查数据库中是否存在值

$member = new Members(); 
$member->setEmail($_POST['email']); 
$member->setName($_POST['vorname']); 
$member->setPassword(password_hash($_POST['pw1'], PASSWORD_DEFAULT)); 

$em = $this->getDoctrine()->getManager(); 
$em->persist($member); 

$get_email = $this->getDoctrine()->getRepository('AppBundle:Members')->find($_POST['email']); 

if (!$get_email) { 
    $em->flush(); 
    echo 'User registered.'; 
} 
else { 
    echo 'User already exists.'; 
} 

在这种情况下,用户总是得到注册。

我的代码有什么问题?

回答

3

使用方法findBy()获取关联数组“field”=>“value”`作为参数。

在您例如

所以(假设电子邮件存储在一个名为email列):

$get_email = $this->getDoctrine()->getRepository('AppBundle:Members')->findBy(array('email' => $_POST['email'])); 
+2

是不是'findBy()'而是find()',当你传递一个这样的数组? –

+0

@MagnusEriksson你是绝对正确的。 'findBy'对我来说就像魅力! –

+0

哦,对不起,我错过了OP的帖子。更正后,感谢@MagnusEriksson的通知 –

0

查找($ ID)

findBy(阵列())

findOneBy(阵列() )

我认为你不应该混淆这三种方法