我的数据库中有两个表:学生和教师。我试着给每位老师分配4名学生,他们正在写关于老师主题的论文。为此,我创建了第三个表:赋值。我提出了两个条件:如果学生被分配(他或她分配的表值为1),那么代码应该跳过该学生,如果老师有超过3个分配的学生(他或她分配的表值小于4),那么代码应该跳过该老师。这是我尝试过的代码:
<?php
require('config_teachers.php');
require('config_students.php');
// We get all the info as associative arrays: $students_info and $teachers_info.
$serverName = "localhost";
$user = "root";
$password = "";
$dbName = "yerkindb";
foreach($students_info as $student_info){
foreach($teachers_info as $teacher_info){
if($student_info['assigned'] == 0 && $student_info['ee_subject'] == $teacher_info['ee_subject_1_choice'] && $teacher_info['assigned'] < 4 ){
$conn = mysqli_connect($serverName, $user, $password, $dbName);
if(mysqli_connect_errno()){
echo "Failed to connect to mysqli.".mysqli_connect_errno();
} else {
$name_student = $student_info['name'];
$name_teacher = $teacher_info['name'];
$subject = $student_info['ee_subject'];
$query = "INSERT INTO assignment(student_name, advisor_name, subject) values('$name_student', '$name_teacher', '$subject')";
mysqli_query($conn, $query);
$assigned_teacher = $teacher_info['assigned'];
$assigned_teacher = $assigned_teacher + 1;
$query = "UPDATE teachers SET assigned = $assigned_teacher WHERE name = '$name_teacher'";
mysqli_query($conn, $query);
$query = "UPDATE students SET assigned = 1 WHERE name = '$name_student'";
mysqli_query($conn, $query);
mysqli_close($conn);
}
}
}
}
?>
排队
if($student_info['assigned'] == 0 && $student_info['ee_subject'] == $teacher_info['ee_subject_1_choice'] && $teacher_info['assigned'] < 4 ){
有我想要指定的条件,但是,当我运行代码时,我会让每个学生被指定给每一位老师,他们的主题与他或她正在写文章的主题相同。
有人能解释为什么这些条件会被忽略,即使
$student_info['ee_subject'] == $teacher_info['ee_subject_1_choice']
这种情况并没有被忽视。