2017-12-08 3 views
-1

두 개의 다른 특정 열을 가져오고 싶습니다. 이미이 테스트를 거쳤으며 두 번째 fetchColumn이 작동하지 않는다는 것을 명확하게 보여줍니다.하지만 echo를 시도했기 때문에 작동하지 않습니다. 그 다음 않는 다음 일반 사용자를 얻을 경우 관리자 권한을 얻는 경우에, 나는 $ 관리 변수에 값이 아닌지이 코드를 검사 할두 개의 서로 다른 fetchColumns가 작동하지 않음

$stmt = $pdo->prepare('SELECT * FROM logins WHERE login_name = :username'); 
$criteria = ['username' => $_POST['Username']]; 
$stmt->execute($criteria); 
$user = $stmt->fetchColumn(1); 
$admin = $stmt->fetchColumn(6); 
if (password_verify($_POST['Password'], $user) && !empty($admin)) { 
    $_SESSION['adminlogin'] = true; 
    $_SESSION['loggedin'] = true; 
    $_SESSION['adminloginname'] = $_POST['Username']; 
    header('location: adminpage.php'); 
} 
elseif (password_verify($_POST['Password'], $user)) { 
    $_SESSION['loggedin'] = true; 
    $_SESSION['username'] = $_POST['Username']; 
    header('location: latestarticles.php'); 
    } else { 
     echo '<p> Wrong password </p>'; 
    } 
} 

: 첫째 fetchColumn는

이 코드입니다 진상. 하지만 $ admin = $ stmt-> fetchColumn (6); 결과가 표시되지 않습니다.

업데이트 : 방금 시도한 한 가지는 첫 번째 fetchColumn 아래에 다른 검색 쿼리를 추가하는 것이었지만 작동하지만 확실한 방법 일 수는 없습니다. 더 쉬운 것이 있어야합니다. 내 코드는 이제 다음과 같습니다

$stmt = $pdo->prepare('SELECT * FROM logins WHERE login_name = :username'); 
$criteria = ['username' => $_POST['Username']]; 
$stmt->execute($criteria); 
$user = $stmt->fetchColumn(1); 
$stmt = $pdo->prepare('SELECT * FROM logins WHERE login_name = :username'); 
$criteria = ['username' => $_POST['Username']]; 
$stmt->execute($criteria); 
$admin = $stmt->fetchColumn(6); 
if (password_verify($_POST['Password'], $user) && !empty($admin)) { 
    $_SESSION['adminlogin'] = true; 
    $_SESSION['loggedin'] = true; 
    $_SESSION['adminloginname'] = $_POST['Username']; 
    header('location: adminpage.php'); 
} 
elseif (password_verify($_POST['Password'], $user)) { 
    $_SESSION['loggedin'] = true; 
    $_SESSION['username'] = $_POST['Username']; 
    header('location: latestarticles.php'); 
    } else { 
     echo '<p> Wrong password </p>'; 
    } 
+0

가 왜 fetchColumn이 가져올 수있는 유일한 방법이라고 생각합니까 :

여기
$result = $stmt->fetch(PDO::FETCH_ASSOC); $user = $result['user_column']; $admin = $result['admin_column']; 

은 PHP 설명서를 참조입니다 PDO에? –

답변

2

PHP 매뉴얼은 말한다 :

(1) fetchColumn()는 값을 구별하는 불가능으로, 부울 열을 검색하는 데 사용되어서는 안된다 FALSE 더 이상 존재하지 않습니다 검색 할 행

(2) 데이터를 검색하기 위해 PDOStatement :: fetchColumn()을 사용하는 경우 같은 행에서 다른 열을 반환 할 방법이 없습니다. 아래 그림과 같이

대신 당신이() 메소드를 가져 오기로 할 수있다 : http://php.net/manual/en/pdostatement.fetch.php

+0

똥 침대, 예, 나는 물건을 빨리 읽고 보통 많이 말해주지 않는 실제 코드를 보았습니다. 이것은 완벽한 @Amila Dev입니다. – xafierz

관련 문제