通过php比较数据库中的列

bq9c1y66  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(365)

我在做一个程序,在数据库(mysql工作台)中比较两列 (difficulty, difficulty_student) 列中的两个不同表格(练习、答案) difficulty_choice 表中的答案。
这就是我的意思:

我使用varchar(yes或no)比较这两个表。如果用户更改了练习的难度,单元格将为“是”,如果未更改,单元格将为“否”。
这些是我的table:

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)
);

我的问题是,在用户按下程序中的submit按钮之前,answers表的行不存在。因此,我只使用mysql workbench中的以下命令来比较表中的列。
我需要的是比较 difficulty_change 当用户按submit时。你能帮我做吗?我拿不到。
我已经使用下面的代码比较了这些列,但是我希望从程序中调用它们,这样我就不必每次都去mysql工作台执行它们。

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);

    }
}
?>
nkhmeac6

nkhmeac61#

尝试:

$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')";
kq4fsx7k

kq4fsx7k2#

使用提交步骤仅更新数据库。添加代码再次查询数据库以检索数据。添加一行以再次调用显示页(显示页调用自身)以显示更新的表。

相关问题