在这里,我有一个对MySql数据库的查询,我正在取出有关要排成一排并显示在我的表中的课程的所有信息。该表的最后一列是一个复选框,我要选中该复选框,以便它将为选中的每一行保存数据行。我选择的变量是courses[],要保存在数组中,然后保存在会话中,以便在其他地方访问。我不确定如何提取行数据以放入我的数组中。现在我有value='$row2013,这不起作用,因为当我var_dump($courses) = array(5) { [0]=> string(5) "Array" [1]=> string(5) "Array" [2]=> string(5) "Array" [3]=> string(5) "Array" [4]=> string(5) "Array" }时,我选择了五门课程。

总结起来,我没有保存正确的东西。

case 2013:
    $string2013 = "SELECT Course.CourseCode, Course.Title, Course.WeeklyHours, Semester.Term, Semester.SemesterCode
    FROM Course, CourseOffer, Semester WHERE Semester.YearNum='$selectedYear' AND Course.CourseCode=CourseOffer.CourseCode AND
    Semester.SemesterCode=CourseOffer.SemesterCode";
    if($Result2013 = mysqli_query($link, $string2013))
    {
        echo "<form action='CourseSelection.php' method='get'>
        <table><tr><th>Code</th><th>Course Title</th><th>Hours</th><th>Term</th><th>Select</th></tr>";
        while($row2013 = mysqli_fetch_assoc($Result2013))
        {
            echo "<tr><td>$row2013[CourseCode]</td><td>$row2013[Title]</td><td>$row2013[WeeklyHours]</td>
            <td>$row2013[Term]</td><td><input type='checkbox' name='courses[]' value='$row2013'></td></tr>";
        }
        echo "</table>";
    }
    else
    {
        echo "<p>" + mysqli_error($link) + "</p>";
    }
    break;

最佳答案

您应该尝试仅将行ID保存在复选框的值中。这样,您可以通过其ID轻松地从数据库中调出一行。 $row2013["CourseCode"]应该可以。

当您执行POST请求时,您将获得一个ID数组($_POST['courses'])。当然,您需要将其视为数组,因此必须对其进行迭代才能获取所有选定的行。

如果您选择var_dump($_POST['courses']),则应假定已选择了前5行:

array (size=5)
  0 => string '1' (length=1)
  1 => string '2' (length=2)
  2 => string '3' (length=3)
  3 => string '4' (length=4)
  4 => string '5' (length=5)


现在,只需根据选定的行查询数据库,就可以了:

SELECT *
FROM Course
WHERE CourseCode = 1
   OR CourseCode = 2
   OR CourseCode = 3
   OR CourseCode = 4
   OR CourseCode = 5

10-07 12:30
查看更多