Получение идентификатора пользователя из одной таблицы и вставка его в другую таблицу - PullRequest
0 голосов
/ 05 мая 2020

Я работаю над проектом, в котором у меня есть две таблицы 1. Таблица пользователей | (id - первичный ключ) 2. mov ie table | (movie_id - первичный ключ, id - внешний ключ)

Я хочу получить user_id из таблицы пользователей и хочу вставить информацию, связанную с mov ie, когда этот пользователь вошел в систему, я использую для этого 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";
        }
    }
}

Простыми словами, я хочу чтобы получить идентификатор из таблицы пользователей, и когда этот конкретный пользователь вошел в систему и заполнил форму, связанную с mov ie, и отправил результаты, он должен быть сохранен в таблице mov ie с его / ее идентификатором пользователя.

Спасибо

1 Ответ

0 голосов
/ 05 мая 2020
<?php

// Assuming $_SESSION['id'] is the User ID of the User Who Currently Logged in.

$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'];
    $id = $_SESSION['id'];

    // Insert into Movie Table
    if (count($errors) === 0) {
        $query = "INSERT INTO movie SET fav=?, rank=?, rewatched=?, status=?, recommend=?, id =?";
        $stmt = $conn->prepare($query);
        $stmt->bind_param('siissi', $fav, $rank, $rewatched, $status, $recommend, $id);
        $result = $stmt->execute();

        if ($result) {
            // If Insertion Successful
        } else {
            // If Something Went Wrong
        }
    }
}

В приведенном выше коде, когда пользователь отправляет форму, он фиксирует детали формы и сохраняет их в таблице mov ie с внешним ключом в качестве идентификатора пользователя. Я предполагаю, что $_SESSION['id'] - это идентификатор пользователя, вошедшего в систему.

...