2017-02-11 7 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

연관 배열 "field"=> "value"를 (를) param으로 얻는 방법 findBy()을 사용하십시오. 당신이 예에 따라서

이 (가정 이메일이 email라는 이름의 컬럼에 저장됩니다) :

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

대신에 findBy()가 아닌가? 'find()'에 배열을 전달할 때? –

+0

@ MagnusEriksson 당신은 절대적으로 맞습니다. 'findBy'는 나를 위해 매력처럼 작동합니다! –

+0

오, 미안, 나는 OP의 게시물을 놓쳤다. @MagnusEriksson에게 고지를 보내 주셔서 감사합니다. –

0

발견 ($ 아이디)

findBy (배열())

findOneBy (배열())

나는 세 가지 방법을 혼동하지 말아야한다고 생각한다.

관련 문제