"> -6ren">
gpt4 book ai didi

php - 基于 HTML 选择选项数组 PHP 更新查询

转载 作者:行者123 更新时间:2023-11-29 11:34:49 25 4
gpt4 key购买 nike

HTML

            <input type="hidden" name="coreid[]" value="<?php echo $coreid; ?>">
<input type="hidden" name="student_no" value="<?php echo $student_no; ?>">

<div class="col col-lg-2 col-md-2 col-xs-2">
<div class="form-group">
<select name="corevalues[]" class="form-control">
<option value="">Select</option>
<?php

$result11 = mysqli_query($con, "SELECT * FROM core_values");

while ($row11 = mysqli_fetch_array($result11)){
$idcore = $row11['id'];
$levelid = $row11['marking'];
$level_name = $row11['non_marking'];
if ($first == $level_name){
echo '<option value="'.$level_name.'" selected="selected">'.$level_name.'</option>';
} else{
echo '<option value="'.$level_name.'">'.$level_name.'</option>';
}
}
?>
</select>
</div>
</div>

PHP

$coreid = $_POST['coreid'];
$grade = $_POST['corevalues'];
$student_no = $_POST['student_no'];
$quarter = $_POST['quarter'];
$marking = $_POST['marking'];
$quarter2 = $_POST['quarter2'];

$xx = 0;



foreach ($coreid as $sid) {
foreach ($grade as $sid2) {
$checkrecords = mysqli_query($con, "SELECT * FROM teacher_cv WHERE coreid='".$sid."' AND student_no='".$student_no."'");

if (mysqli_num_rows($checkrecords) > 0){

$sql = "UPDATE teacher_cv
SET $quarter='".$sid2."'
WHERE coreid='".$sid."' AND
student_no='".$student_no."'";

if (!mysqli_query($con,$sql))
{
die('Error: 1 ' . mysqli_error($con));
}
$xx++;
} else{

$sql = "INSERT INTO teacher_cv
( coreid,
$quarter,
student_no)
VALUES ( '".$sid."',
'".$sid2."',
'".$student_no."')";

if (!mysqli_query($con,$sql))
{
die('Error: 1 ' . mysqli_error($con));
}
$xx++;
}
}
}

我正在使用 HTML Select 选项上的多个数据库更新我的表 Teacher_cv。展现教师学生的核心值(value)观是什么标准。

但是当涉及到我表中的first_q 列时,更新和插入查询似乎总是得到最后一部分。这是我迄今为止制作的示例。 enter image description here

看起来核心 id 正在工作,但在 HTML Select 中选择的标准始终获取数组的最后一部分。如何插入/更新所有数组而不是数组的最后部分?

更新

我尝试在 foreach 之前打印它,看看它是否真的传递了数组,这是结果。

    Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) 
Array ( [0] => Sometimes Observed [1] => Rarely Observed [2] => Rarely Observed [3] => Not Observed [4] => Sometimes Observed )

感谢 Kunal,现在我知道数组真的通过了。为什么数据库中只输入Array的最后一个? PHP 代码出了什么问题?

最佳答案

您不应该将嵌套循环与 $coreid$grade 一起使用,因为每个数组的相应元素放在一起。您正在创建它们之间的叉积。所以应该是:

foreach ($coreid as $i => $sid) {
$sid2 = $grade[$i];
...
}

此外,由于您使用的是 MySQLI,因此应该使用准备好的查询,而不是将变量连接到查询。如果 (coreid, Student_no) 上有唯一索引,您可以使用 ON DUPLICATE KEY UPDATE 选项在单个 INSERT 查询中执行所有操作.

$stmt = mysqli_prepare($con, "INSERT INTO teacher_cv (coreid, quarter, student_no)
VALUES(?, ?, ?)
ON DUPLICATE KEY UPDATE quarter = VALUES(quarter)" or die(mysqli_error($con));;
mysqli_stmt_bind_param($stmt, "sss", $sid, $sid2, $student_no);

foreach ($coreid as $i => $sid) {
$sid2 = $grade[$i];
mysqli_stmt_execute($stmt);
$xx++;
}

关于php - 基于 HTML 选择选项数组 PHP 更新查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36808436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com