php - 通过 PHP 比较数据库中的列

标签 php mysql database compare

我正在编写一个程序,在数据库(Mysql-Workbench)中比较 2 个不同表的 2 列(difficulty,difficulty_student)(EXERCISES,ANSWERS)ANSWERSdifficulty_choice 列中。

这就是我的意思:

enter image description here

我正在使用 VARCHAR(是或否)比较两个表。如果用户更改了练习的难度,则单元格将为"is",如果没有更改,则单元格将为“否”。

这些是我的表格:

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中的列。你能帮我做吗?我无法得到它。

我已经成功地使用以下代码比较了列,但我希望从程序中调用它们,这样我就不必每次都去 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);

    }
}
?>

最佳答案

尝试:

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

关于php - 通过 PHP 比较数据库中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51874744/

相关文章:

php - 将 ASCII 码存储在 mysql 数据库中

分别具有多个列组的 MySQL SUM

mysql - SQL表一次又一次接受相同的名称数据库名称检查

mysql - MySQL 触发器未正确计算总和

PHP:如何将我的数组设为 'cut'?

php - 在 PHP 中检查字符串是否为 JSON 的最快方法?

php - foreach 循环,在 foreach 循环中使用 sql 查询

javascript - 在保存时通过 Ajax 运行 UPDATE 查询

mysql - 带连接的双重计数查询

mysql - 保存、编辑、删除按钮的功能