2014-04-15 2 views
0

나는 PDO를 사용하여 간단한 사용자 로그인을 구현하고 있습니다. 그러나 그것은 나에게 경고 메시지를주고있다 :PDO를 사용하여 로그인 - PHP

공지 사항 : 정의되지 않은 인덱스 : ID를 login.php에서 줄에 39

코드 : 내가 여기서 뭘

<?php 
if($_POST) 
{ 

    $query = $db->prepare('SELECT * FROM users 
          WHERE email = :email and password = :pass'); 

    $query->execute(array(':email' => $_POST['email'], 
        ':pass' => $_POST['password'])); 

    $count = $query->rowCount(); 

    if($count==1) 
    { 
     $result   = $query->fetchAll(); 

     $_SESSION['user'] = $result['id']; 

     header("location:index.php"); 
     exit; 
    } 
    else 
    { 
     $_SESSION['message']='Invalid login details.'; 
     header("location:login.php"); 
     exit; 
    } 
} 
?> 

를 놓친 거지?

http://www.php.net/manual/en/pdostatement.fetchall.php 그래서 당신은 당신이 고유의 사용자 이름을 저장하는 가정 $result[0]['id']

+2

[PHP : "주의 : 정의되지 않은 변수"및 "주의 : 정의되지 않은 인덱스"]의 중복 가능성 (http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice -undefined-index) – Gajus

+0

fetchAll은 배수 행을 의미합니다. – Luceos

+0

''var_dump ($ result)''를 사용하여 PDO가 반환하는 것을 확인하십시오. –

답변

2

해야합니다 :

0

fetchAll은 배열을 반환합니다. 여기서 fetchAll()을 사용할 필요는 없습니다. fetch();를 사용할 수 있습니다.

$result = $query->fetch(PDO::FETCH_ASSOC); 
echo $result['id']; 
관련 문제