mysql查询从我的数据库中获取数据并通过while循环将其发布到表中的输入字段中。这很好,所有252个预期的表行都显示出来。 在相应的PHP页面上按下提交按钮应将数据发送到计算脚本并(重新)将数据写入数据库。
问题:处理页面只有200行。即52条线路没有通过。我已经设置了一个快速脚本来检查输出,这也表明只有200行。
我已经发现的东西:一旦我逐行减少表格,通过的数据量就会增加。只有3行(tipp_id,tipp_heim,tipp_gast),所有252行都可以通过。
是否存在我不知道的吞吐量限制?或者任何想法如何解决这个问题?
查询&表(表包含252行):
$records = mysqli_query($conn, "
SELECT
sp.spiel_id,
sp.tore_heimteam,
sp.tore_gastteam,
t.match_id,
t.tipp_heim,
t.tipp_gast,
t.tipp_id
FROM
spielplan sp
LEFT JOIN tipps t
ON sp.spiel_id = t.match_id
");
while($fields = mysqli_fetch_assoc($records)) {
?>
<tr>
<td><input type="text" name="tipp_ids[]" value="<?php echo fields["tipp_id"] ?>"></td>
<td><input type="text" name="goals_hometeams[]" value="<?php echo $fields["tore_heimteam"] ?>"></td>
<td><input type="text" name="goals_guestteams[]" value="<?php echo $fields["tore_gastteam"] ?>"></td>
<td><input type="text" name="tipp_guestteams[]" value="<?php echo $fields["tipp_gast"] ?>"></td>
<td><input type="text" name="tipp_hometeams[]" value="<?php echo $fields["tipp_heim"] ?>"></td>
</tr>
检查POST输出的脚本(输出= 200行):
$goalsHome = $_POST['goals_hometeams'];
$goalsGuest = $_POST['goals_guestteams'];
$tippHomes = $_POST['tipp_hometeams'];
$tippGuests = $_POST['tipp_guestteams'];
$tipp_id = $_POST['tipp_ids'];
$i=0;
foreach($goalsHome as $key => $ghome) {
$i++;
echo $ghome.";";
echo $goalsGuest[$key].";";
echo $tippHomes[$key].";";
echo $tippGuests[$key].";";
echo $tipp_id[$key].";";
echo "<br>";
}
echo $i;
答案 0 :(得分:4)
我相信您可能会达到max_input_vars
限制。默认值为1000。
您可以通过编辑php.ini来解决此问题。 (见:This post on SO)
虽然我建议更改界面。
界面中的一点细节;
如果您尝试让访问者填写1000多个输入字段,请使用增加的max_input_vars
选项。周期。
但是,如果输入字段实际上只是一个前端机制,那么你错误地使用它们(在我看来)。输入字段就是它们的INPUT字段。如果您不需要最终用户的输入,请不要使用输入字段。您可以使用任何HTML元素来显示数据。
如果您只需要用户提供一个或两个值。只要求那些一两个值。也许创建一个小的javascript弹出窗口,请求你需要的输入。从那里,您可以重新计算数据并使用xhttp请求将其发回数据库。
答案 1 :(得分:3)
查看您的php.ini
参数max_input_vars = 2500
,默认值为2500,但您的设置可能不同。我猜你已经超过了这个表格
尝试将其增加到与所有表单输入的计数相匹配的值
max_input_vars = 3500