Мне нужно ввести поле USER_ID моей таблицы USER в качестве внешнего ключа в другой таблице. Поэтому, я думаю, мне нужно начать сеанс, когда пользователь войдет в систему. У меня возникают трудности с его эхом в любом месте. Я могу начать сеанс, который позволяет мне повторять USERNAME, но не может реплицировать его для ID.
Любая помощь, пожалуйста? Мой код обработки ниже. Я также вставил раздел, где я временно пытаюсь повторить его для тестирования.
Сценарий обработки:
<?php session_start(); $error_message = array(); $error = false; $dbhost = "localhost"; $dbname = "xxx"; $dbuser = "xxx"; $dbpass = "xxx"; $conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass); $user = $_POST['uname']; $password = $_POST['pword']; if($user == '') { $error_message[] = 'You have not entered the required username.'; $error = true; } if($password == '') { $error_message[] = 'You have not entered the required username'; $error = true; } $result = $conn->prepare("SELECT * FROM USER WHERE USERNAME= :un AND PASSWORD= :pw"); $result->bindParam(':un', $user); $result->bindParam(':pw', $password); $result->execute(); while ($rows = $result->fetch(PDO::FETCH_NUM)) { if($rows > 0) { $_SESSION['Logged_In'] = true; $_SESSION['username'] = $user; $_SESSION['USER_ID'] = $rows['USER_ID']; header('Location: index.php'); } else{ $error_message[] = 'Your username and password are not correct. Try again.'; $error = true; } if($error) { $_SESSION['ERROR_MESSAGE'] = $error_message; session_write_close(); header("location: log_in.php"); exit(); }} ?>
Где я хочу, чтобы USER_ID появлялся:
<?php session_start(); if(isset($_SESSION['Logged_In'])) { echo '<br><br>'; echo 'You are logged in as '; echo $_SESSION['username']; echo '<br>'; echo "ID = ".$_SESSION['USER_ID']; echo '<br>'; echo '<a href="logout.php"> Click here to log out.</a>'; } else { echo '<br>'; echo 'You are not logged in!<br>'; echo '<a href="log_in.php">Click here to log in,</a><br>'; echo '<a href="register.php">or click here to register.</a>'; } ?>
используйте FETCH_ASSOC вместо FETCH_NUM