![](/img/trans.png)
[英]mysql_fetch_array showing the first row only when using while loop
[英]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.