【发布时间】:2020-08-19 20:18:13
【问题描述】:
我正在做一个有两张桌子的项目 1.用户表| (id 为主键) 2.电影桌| (movie_id为主键,id为外键)
我想从 users 表中获取 user_id 并想在该用户登录时插入电影相关信息 我正在为此使用 session_variables 但我不知道我的代码是否正确我尝试了以下代码但没有得到任何结果。
这是我的进程.php
$errors = [];
$fav = "";
$rank = "";
$rewatched = "";
$status = "";
$recommend = "";
if (isset($_POST['submit'])) {
if (empty($_POST['fav'])) {
$errors['fav'] = 'Favourite required';
}
if (empty($_POST['rank'])) {
$errors['rank'] = 'Rank required';
}
if (empty($_POST['rewatched'])) {
$errors['rewatched'] = 'Rewatched required';
}
if (isset($_POST['status'])) {
$errors['status'] = 'Status required';
}
if (isset($_POST['recommend'])) {
$errors['recommend'] = 'Recommend required';
}
$fav = $_POST['fav'];
$rank = $_POST['rank'];
$rewatched = $_POST['rewatched'];
$status = $_POST['status'];
$recommend = $_POST['recommend'];
// Select id from users and insert into movie
if (count($errors) === 0) {
$sql = "SELECT * FROM movie WHERE id = (SELECT id FROM users WHERE id = '".$_SESSION['id']."')";
$query = "INSERT INTO movie SET fav=?, rank=?, rewatched=?, status=?, recommend=? WHERE id = '".$_SESSION['id']."'";
$stmt = $conn->prepare($query);
$stmt->bind_param('siiss', $fav, $rank, $rewatched, $status, $recommend);
$result = $stmt->execute();
if ($result) {
$anime_id = $stmt->insert_id;
$stmt->close();
$_SESSION['id'] = $movie_id;
$_SESSION['fav'] = $fav;
$_SESSION['rank'] = $rank;
$_SESSION['rewatched'] = $rewatched;
$_SESSION['status'] = $status;
$_SESSION['recommend'] = $recommend;
$_SESSION['message'] = 'Details have been submitted successfully!';
$_SESSION['type'] = 'alert-success';
} else {
$_SESSION['error_msg'] = "Database error: Could not update details";
}
}
}
简单来说,我想从用户表中获取 id,当该特定用户登录并填写与电影相关的表单并提交结果时,它应该与他/她的用户 id 一起存储在电影表中。
谢谢
【问题讨论】:
-
您已经在会话中存储了用户 ID 对吗?那为什么你还需要再次从数据库中查询呢?将
$sql = "SELECT * FROM movie WHERE id = (SELECT id FROM users WHERE id = '".$_SESSION['id']."')";更改为$sql = "SELECT * FROM movie WHERE id = $_SESSION['id']";