Сравнение столбцов из базы данных через PHP

0

Я делаю программу, в которой Im сравнивает в базе данных (Mysql-Workbench) 2 столбца (difficulty, difficulty_student) из двух разных таблиц (УПРАЖНЕНИЯ, ОТВЕТЫ) в столбце difficulty_choice таблицы ANSWERS.

Это то, что я имею в виду:

Изображение 174551

Im сравнивая обе таблицы с помощью VARCHAR (YES или NO). Если пользователь изменил сложность упражнения, ячейка будет "ДА", если она не была изменена, ячейка будет "НЕТ".

Это мои таблицы:

CREATE TABLE exercises (
    exercise_id INT,
    difficulty VARCHAR(30),
    PRIMARY KEY(exercise_id)
);

CREATE TABLE answers(
    exercise_id_fk INT,
    student_id INT,
    difficulty_change VARCHAR(3),
    difficulty_student VARCHAR(30),
    FOREIGN KEY(exercise_id_fk) REFERENCES exercises(exercise_id)
);

Моя проблема в том, что строки таблицы ANSWERS не существуют, пока пользователь не нажмет кнопку SUBMIT в программе. Поэтому мне удалось сравнить столбцы, которые находятся в таблице, используя команды ниже в Mysql-Workbench.

Мне нужно сравнить столбцы в difficulty_change когда пользователь нажимает кнопку SUBMIT. Можете ли вы помочь мне сделать это? Я не могу это получить.

Мне удалось сравнить столбцы, используя следующие коды, но я хочу, чтобы они вызывались из программы, поэтому мне не нужно каждый раз обращаться к Mysql-Workbench для их выполнения.

SELECT e.difficulty, a.difficulty_student, 
case when e.difficulty = a.difficulty_student then 'NO' else 'YES' 
         END  as difficulty_change
FROM exercises e 
INNER JOIN answers a  on e.exercise_id=a.exercise_id_fk;


UPDATE answers a 
INNER JOIN exercises e  on e.exercise_id=a.exercise_id_fk 
set a.difficulty_change = case 
     when e.difficulty = a.difficulty_student then 'NO' else 'YES' END
where e.exercise_id=a.exercise_id_fk;

Это мой PHP, это может помочь:

<?php

if (isset($_POST['submit'])) {
    $user_id = $_SESSION['user_id'];
    $user_check_query = "SELECT * FROM users WHERE id='$user_id'";
    if(isset($_POST['choice'], $_POST['choose'])){
            $choice_answer=$_POST['choice'];
            $difficulty=$_POST['choose'];
//      */$user_id = $_SESSION['user_id'];*/
            $query = "INSERT INTO answers (exercise_id_fk, student_id, difficulty_student, choice_answer) VALUES ('$id','$user_id', '$difficulty', '$choice_answer')";
            $sql=mysqli_query($conn,$query);

    }
}
?>
  • 0
    Этот код содержит те же уязвимости, что и ваш недавно удаленный вопрос. Не соглашайтесь с этим - это подвергает вас и ваших пользователей потенциальному риску безопасности.
Теги:
database
compare

2 ответа

1
Лучший ответ

Пытаться:

$query = "INSERT INTO answers (exercise_id_fk, student_id, difficulty_change, difficulty_student, choice_answer) VALUES ('$id','$user_id', (SELECT IF(difficulty='$difficulty','NO','YES') FROM exercises WHERE exercise_id=$id), '$difficulty', '$choice_answer')";
0

Используйте шаг отправки, чтобы обновить db. Добавьте код, чтобы снова запросить db для извлечения данных. Добавьте строку, чтобы снова вызвать страницу отображения (сама страница отображения), чтобы отобразить обновленную таблицу.

  • 0
    Вы можете помочь мне сделать это? Я не знаю как

Ещё вопросы

Сообщество Overcoder
Наверх
Меню