>

데이터베이스에서 고객 참조와 동일하게 세션 값을 설정하려고하는데 제대로 작동하지 않는 것 같습니다. 에코가 올바른 고객 참조 대신 0을 인쇄합니다

내 코드는

<?php
if (isset($_POST['Login'])) {
$loginEmail = $_POST['loginEmail'];
$loginPassword = md5($_POST['loginPassword']);
// the db should only be queried if both email and password are filled in
if (empty($loginEmail) || empty($loginPassword)) {
    $Error = "Email and Password can't be left blank";
}
else {
    $sql = "SELECT customerRef FROM customer WHERE Email=? AND Password=?";
    $stmt = mysqli_stmt_init($conn);
    if (mysqli_stmt_prepare($stmt, $sql)) {
        mysqli_stmt_bind_param($stmt, "ss", $loginEmail, $loginPassword);
        mysqli_stmt_execute($stmt);
        mysqli_stmt_store_result($stmt);
        mysqli_stmt_bind_result($stmt, $id); 

        echo $id;
        if (mysqli_stmt_num_rows($stmt) == 2) { // this is normally 1 i just changed it to 2 so i wouldnt be redirected everytime
            // sets the session values
            $_SESSION['valid'] = true;
            $_SESSION['timeout'] = time();
            $_SESSION['username'] = $_POST['loginEmail'];
            header("Location: homepage.php");
            die();
        }
        else {
            $Error = "Username or password is incorrect";
        }
    }
}
// Close statement
$stmt->close();
// Close connection
$conn->close();
} //end of sign in isset

모든 조언을 부탁드립니다


  • 답변 # 1

    실제로 mysqli_stmt_fetch() 를 부르지 않았습니다   $id 에 아무것도 저장되지 않았을 것입니다 .

    문서에서 :

    와이즈 비즈

    따라서 추가

    When mysqli_stmt_fetch() is called to fetch data, the MySQL client/server protocol places the data for the bound columns into the specified variables var1, ....

    mysqli_stmt_fetch($stmt); 에 전화 한 후

    .

    mysqli_stmt_bind_result

관련 자료

  • 이전 c - 누군가 허용 된 문자열 크기보다 더 많이 입력하면 fgets가 줄을 건너 뛰는 이유를 설명 할 수 있습니까?
  • 다음 excel - Msgbox를 활성화하기위한 셀 값 비교