Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在每个foreach中使用多个foreach进行insert只获取每个foreach中的最终值_Php_Mysqli - Fatal编程技术网

Php 在每个foreach中使用多个foreach进行insert只获取每个foreach中的最终值

Php 在每个foreach中使用多个foreach进行insert只获取每个foreach中的最终值,php,mysqli,Php,Mysqli,我目前正在研究一个评估系统。问题是动态创建的/ 所以我已经试着从不同的foreach输入字段中插入值,我使用输入类型文本而不是单选按钮。我的代码只是插入从每个foreach循环得到的最后一个值 <?php session_start(); include('connectDB.php'); $userId= $_SESSION['id']; mysqli_query($conn,"UPDATE student SET evaluationId = 1

我目前正在研究一个评估系统。问题是动态创建的/

所以我已经试着从不同的foreach输入字段中插入值,我使用输入类型文本而不是单选按钮。我的代码只是插入从每个foreach循环得到的最后一个值

 <?php 
    session_start();
    include('connectDB.php');
    $userId= $_SESSION['id'];

    mysqli_query($conn,"UPDATE student SET evaluationId = 1 WHERE studentId='$userId'");

    foreach($_POST['nPersonnelId'] as $personnelId ){
        for ($i=0; $i<count($_POST['rCourteous']); $i++){
            $rCourteous = $_POST['rCourteous'][$i];
        }
        for ($i=0; $i<count($_POST['rPrompt']); $i++){
            $rPrompt = $_POST['rPrompt'][$i];
        }
        for ($i=0; $i<count($_POST['rCompetent']); $i++){
            $rCompetent = $_POST['rCompetent'][$i];
        }
        for ($i=0; $i<count($_POST['rAccom']); $i++){
            $rAccom = $_POST['rAccom'][$i];
        }
        mysqli_query($conn,"INSERT INTO qpanswer
                (studentId,personnelId,courteous,prompt,competent,accommodating) 
                VALUES ('$userId','$personnelId','$rCourteous','$rPrompt','$rCompetent','$rAccom')");
    }
    header('location:studentDashboard.php');
?>

您不需要所有的内部循环,只需从外部循环获取索引并将其用于所有内部数组即可。因此,这里从
foreach
键获取
$i

foreach($_POST['nPersonnelId'] as $i => $personnelId ){
    $rCourteous = $_POST['rCourteous'][$i];
其他每个字段都相同


正如所指出的,使用准备好的语句。

您的代码容易受到SQL注入的攻击。使用预先准备好的语句。对不起,我的代码我只是一个初学者,如何改进它?非常感谢@JasperThanks!我真的很感激@Pie@Jaspersorry我只是一个初学者``foreach($\u POST['nPersonnelId']as$I=>$personnelId){$rCourteous=$\u POST['rCourteous'][$I];mysqli_查询($conn),插入qpanswer(studentId,personnelId,cious)值($userId','personnelId','rCourteous);}“``我照你说的做了,但什么也没发生。我只是礼貌地测试了一下,其他每个字段都是一样的。因此,对于循环中的每个字段,你也需要将其更改为类似于
$rCourteous
的设置方式。对不起,我不明白。你能给我解释一下吗?我有点担心。”慢点,对不起