繁体   English   中英

使用多个数组时仅插入第一行数据

[英]Only first row data is inserted while using multiple array

我在表格中使用了四个数组。 仅使用2个数组时,它可以工作。 但是,仅插入第一个学生的第一条记录的 2个数组(以下格式)。 我试过使用多个foreach ,但不能解决问题。 我的PHP FORM输出如下。

<form method="post" action="mark.php">
<table id="customers">
    <tr>
        <th>Name</th>
        <th colspan="2"><input type="text" name="subjectid[]" value="Social"></th>
        <th colspan="2"><input type="text" name="subjectid[]" value="Math"></th>
        <th colspan="2"><input type="text" name="subjectid[]" value="English"></th>
    </tr>
    <tr>
        <td><input type="text" name="stdname[]" value="John"></td>

        <td><input type="number" name="theory[]" value=""></td>
        <td><input type="number" name="practical[]" value=""></td>

        <td><input type="number" name="theory[]" value=""></td>
        <td><input type="number" name="practical[]" value=""></td>

        <td><input type="number" name="theory[]" value=""></td>
        <td><input type="number" name="practical[]" value=""></td>

    </tr>
        <td><input type="text" name="stdname[]" value="Rahul"></td>

        <td><input type="number" name="theory[]" value=""></td>
        <td><input type="number" name="practical[]" value=""></td>

        <td><input type="number" name="theory[]" value=""></td>
        <td><input type="number" name="practical[]" value=""></td>

        <td><input type="number" name="theory[]" value=""></td>
        <td><input type="number" name="practical[]" value=""></td>

    </tr>
</table>
    <input type="submit" name="submit1" value="submit"></input>
</form>

PHP代码

<?php }
if(isset($_POST['submit1'])){
    $subjectid = $_POST['subjectid'];
    $theory = $_POST['theory'];
    $practical = $_POST['practical'];
    $stdname = $_POST['stdname'];

    foreach ($theory AS $key => $item) {               
        $sql = "INSERT INTO mark(subjectid, theory, practical, stdname) VALUES (:subjectid, :theory, :practical, :stdname)";
        $query = $con->prepare($sql);
        $query->bindParam(':subjectid', $subjectid[$key]);
        $query->bindParam(':theory', $theory[$key]);
        $query->bindParam(':practical', $practical[$key]);
        $query->bindParam(':stdname', $stdname[$key]);
        $query->execute();
        echo "<script>alert('Mark is inserted')</script>";
        echo("<script>window.location = 'mark.php';</script>");
        } 
}
?>

插入以下输入时 在此处输入图片说明

它存储在数据库中 在此处输入图片说明

但是它必须存储为 在此处输入图片说明

似乎prepare正在与last语句一起缓存。 你可能写

$sql = "INSERT INTO mark(subjectid, theory, practical, stdname) VALUES (:subjectid, :theory, :practical, :stdname)";
$query = $con->prepare($sql);
foreach ($theory AS $key => $item) {               

代替

foreach ($theory AS $key => $item) {               
    $sql = "INSERT INTO mark(subjectid, theory, practical, stdname) VALUES (:subjectid, :theory, :practical, :stdname)";
    $query = $con->prepare($sql);

其他可能性可能会违反任何约束,您可能在任何列上都有唯一的键约束,并尝试在循环中插入相同的值。 您可以通过在代码下面添加以下代码行来进行验证。

echo $query->error;

使用嵌套的foreach作品

foreach ($stdname AS $key => $item){
    $query->bindParam(':stdname', $stdname[$key]);
        foreach ($theory AS $key => $item) {               
            $query->bindParam(':subjectid', $subjectid[$key]);
            $query->bindParam(':theory', $theory[$key]);
            $query->bindParam(':practical', $practical[$key]);
            $query->execute();
        }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM