如何保存PHP中复选框所选数据库中的一行数据

如何保存PHP中复选框所选数据库中的一行数据,php,mysql,sql,arrays,checkbox,Php,Mysql,Sql,Arrays,Checkbox,在这里,我有一个对MySql数据库的查询,我将获取一个课程的所有信息,并将其排成一行显示在我的表中。表的最后一列是一个复选框,我想设置该复选框,这样它将为选中的每一行保存数据行。我选择的变量是courses[],保存在数组中,然后保存在会话中,以便在其他位置访问。我不确定如何提取要放入数组的行数据。现在我有了value='$row2013,这不起作用,因为当我var_dump($courses)=数组(5){[0]=>string(5)“array”[1]=>string(5)“array”[2

在这里,我有一个对MySql数据库的查询,我将获取一个课程的所有信息,并将其排成一行显示在我的表中。表的最后一列是一个复选框,我想设置该复选框,这样它将为选中的每一行保存数据行。我选择的变量是
courses[]
,保存在数组中,然后保存在会话中,以便在其他位置访问。我不确定如何提取要放入数组的行数据。现在我有了
value='$row2013
,这不起作用,因为当我
var_dump($courses)=数组(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;
案例2013:
$string2013=“选择Course.CourseCode、Course.Title、Course.weekly小时、学期、学期、学期代码
FROM Course、CourseOffer、Semmer WHERE Semmer.Dearneum=“$selectedYear”和Course.CourseCode=CourseOffer.CourseCode和
学期.SemesterCode=CourseOffer.SemesterCode”;
if($Result2013=mysqli_查询($link,$string2013))
{
回声“
编解码器课程标题“小时术语选择”;
而($row2013=mysqli_fetch_assoc($Result2013))
{
echo“$row2013[CourseCode]$row2013[Title]$row2013[WeeklyHours]
$row2013[期限]”;
}
回声“;
}
其他的
{
echo“”+mysqli_错误($link)+“

”; } 打破
您可以使用jQuery来完成这项工作,也可以使用jQuery来处理和验证表单。或者,对于每一行,您可以为该行构建一个数组,并将其作为隐藏值传递。然后在它发布时,查看复选框是否选中,如果选中,则让脚本使用隐藏值。

value='$row2013'
???例如,应该是
value='$row2013[“CourseCode”]
方式1: 如果我可以假设您的课程表有一个主键列('CourseCode'),那么您不必将整行保存为复选框中的值。只需保存选中行的课程代码。然后,您可以通过将CourseCode附加到输入名称,为每个其他表格单元格添加唯一的隐藏输入,例如:

<input type='hidden' name='Title_" . $row['CourseCode'] . "' value='" . $row['Title'] . "'> etc.
方式2:将复选框值存储为json编码字符串:
json_encode($row2013)
然后您可以再次迭代(在CourseSelection.php中):


我还没有仔细检查是否有错误,但您明白了。

您应该尝试在复选框的值中只保存行ID。通过这种方式,您可以通过其ID轻松地从数据库中调用行。
$row2013[“CourseCode”]
应该可以工作

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

如果您
var\u dump($\u 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

如果我想要那一排的所有东西呢?如果我改为
mysqli\u fetch\u行
istead of
mysqli\u fetch\u assoc
以您可以发布的格式发布,
value='$row2013'
正在执行echo
$row2013
。。。我不认为你做
echo Array
是有好处的,它正在打印数组的类型,你将收到
value=“Array”
——但是不,数组的内容在我的输入标记中,我是否需要指定我想保存在我的名称和值中的每一列?对于方法1,是,如果要在脚本中检索该列数据。此外,我建议您使用POST,以避免遇到数据大小限制问题。此解决方案需要对数据库进行另一次调用,以获取表中已存在的信息(通过以前的SQL查询)以及可以通过POST轻松检索的信息。
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