Php 表单上可检索文本框的限制?
我有一个PHP文件,它的表单应该向PHP文件发送1060个条目(从1060个文本框) 然后将它们添加到数据库中。但是从第711个文本框到第1060个文本框, 它不检索任何内容,并向我发送Php 表单上可检索文本框的限制?,php,sql,Php,Sql,我有一个PHP文件,它的表单应该向PHP文件发送1060个条目(从1060个文本框) 然后将它们添加到数据库中。但是从第711个文本框到第1060个文本框, 它不检索任何内容,并向我发送Undefined indexSQL错误。 1060文本框基本上具有相同的代码,只是一些数字有所更改可以检索的文本框数量是否有限制?如果有限制,有没有办法增加?(我正在使用WAMP/我没有使用GET方法,只使用POST) 1060文本框代码的部分此代码在同一页上重复了1060次,只更改了数字(db1、db2等)。
Undefined index
SQL错误。
1060文本框基本上具有相同的代码,只是一些数字有所更改可以检索的文本框数量是否有限制?如果有限制,有没有办法增加?(我正在使用WAMP/我没有使用GET
方法,只使用POST
)
1060文本框代码的部分此代码在同一页上重复了1060次,只更改了数字(db1、db2等)。它也在表单(
)中,有一个提交
按钮,基本完成。:
<?php
$username=$_SESSION['username'];
echo " <script type=text/javascript>
var hidden = false;
function actiondb143() {
if(!hidden) {
document.getElementById('clickdb143').style.visibility = 'visible';
document.getElementById('db143').style.visibility = 'visible';
document.getElementById('db143').value = value='".$username."';
}
}
</script>
";
echo "</head>";
echo "<body>";
$country="Philippines";
$curdate=$_SESSION["curdate"];
$checker=mysqli_fetch_array(mysqli_query($con, "SELECT colDoneBy FROM tblChecklist WHERE colEntryID='143' AND colDate='$curdate' AND colCountry='$country'"));
if($checker[0] != NULL){
$result=mysqli_query($con,"SELECT * from tblChecklist WHERE colEntryID='143' AND colDate='$curdate'");
while($row=mysqli_fetch_array($result))
{
echo "<center><table border=0 width=100><font face=arial>";
echo "<td width=100 bgcolor=#844BA13>";
echo "<input type=text name=db143 value=".$row["colDoneBy"]." size=12 readonly>";
echo "</td>";
echo "</font></table></center>";
}
}
else {
echo "<table border=0 width=100><font face=arial>";
echo "<td width=100 bgcolor=#C44448>";
echo "<div class=buttonasglobal><input type=button value=' VERIFY 'name=clickdb143 onClick='actiondb143()'; style=\"left:100;\"></div>";
echo "<div class=textasglobal><input type=text name=db143 style=\"visibility:hidden; width:80px;\" readonly>";
echo "</td>";
echo "</font></table>";
}
?>
<html>
<head>
<title>Jobsheets+</title>
<script type=text/javascript>
function getDate(){
document.getElementById('curdate').value =new Date().toLocaleDateString();
}
</script>
</head>
<body onLoad = 'getDate();' background="bgimage.jpg">
<?php
session_start();
$con=mysqli_connect("localhost","root","","dbjobsheets");
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL " . mysqli_connect_error();
}
$curdate=$_SESSION["curdate"];
mysqli_query($con,"UPDATE tblChecklist SET colActualStart='$_POST[as143]', colActualEnd='$_POST[ad143]', colRemarks='$_POST[jr143]', colDoneBy='$_POST[db143]', colCheckedBy='$_POST[cb143]' WHERE colEntryID='143' AND colDate='$curdate'");
mysqli_close($con);
?>
</body>
</html>
缺少源代码的重要部分,因此我只能猜测
I您正在使用这些1000多个输入框执行GET
,您可能会使用最大url长度。
一些防火墙、代理服务器和Web服务器将url限制为1024字节
表单应该执行POST
,然后数据在主体中传输,并且仅受PHP中的最大POST大小的限制
您的代码包含SQL注入。使用参数,而不是动态创建SQL
PHP人员引入了哈希冲突bug的限制
max_input_vars
可能这里也会出现这种情况。我并没有看到您的表单标记,但若您使用GET方法,那个么您应该知道GET方法的局限性,因为示例代码的全部都在表单中,所以我可以检索文本框1到710。我没有使用任何GET
命令,只使用示例PHP代码中所示的POST
。但是如果GET
函数有它的限制,那么可能POST
也有它的限制。是否有办法配置WAMP服务器以增加其限制?您的第一部分缺少表单标记。那太糟糕了。在第二个脚本中,您应该使用var_dump($_POST)查看请求中的内容。我建议使用参数化的预处理语句,而不是将sql语句与未初始化的用户输入连接起来。单引号将打破这一点。您的第一部分对每个文本框也使用相同的名称。这段代码似乎与您实际使用的代码相去甚远。首先,在我的问题的第一版中是否说它只是代码的一部分;我不能发布我的全部代码,因为到目前为止,它有超过50K行代码(大部分由重复的代码组成,它们之间的差异最小,但它们本身对系统来说是必不可少的)。其次,如果我没有使用一个模块,为什么我会撒谎并发布一个我想要修复的模块。这就是SO的问题所在,由于技术问题,初级程序员被否决票击倒,而不是以正确的方式引导他们/回答问题。我已经了解到了这一点,并使用Wamp图标修改了我的php.ini,增加了以下代码max_post_size
和max_input_vars
;但这仍然不能解决问题。在windows上,您通常需要重新启动服务。你是为Web服务器做的吗?我重新启动了WAMP服务;没有修好它。重启电脑解决了这个问题。增加max\u input\u vars
,post\u max\u size
,&内存限制
解决了这个问题。感谢您为我提供了正确的想法/解决方案。