Php 未定义的索引错误
我是PHP新手,遇到以下错误: 注意:未定义的索引:productid在/var/www/test/modifyform.php上 第32行 注意:未定义的索引:name位于/var/www/test/modifyform.php的第行 三十三 注意:未定义索引:price in/var/www/test/modifyform.php在线 三十四 注意:未定义索引:在/var/www/test/modifyform.php中的描述 第35行 我在网上找不到任何解决方案,所以也许有人可以帮我 代码如下:Php 未定义的索引错误,php,forms,post,undefined,Php,Forms,Post,Undefined,我是PHP新手,遇到以下错误: 注意:未定义的索引:productid在/var/www/test/modifyform.php上 第32行 注意:未定义的索引:name位于/var/www/test/modifyform.php的第行 三十三 注意:未定义索引:price in/var/www/test/modifyform.php在线 三十四 注意:未定义索引:在/var/www/test/modifyform.php中的描述 第35行 我在网上找不到任何解决方案,所以也许有人可以帮我 代码
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
<input type="hidden" name="rowID" value="<?php echo $rowID;?>">
<p>
Product ID:<br />
<input type="text" name="productid" size="8" maxlength="8" value="<?php echo $productid;?>" />
</p>
<p>
Name:<br />
<input type="text" name="name" size="25" maxlength="25" value="<?php echo $name;?>" />
</p>
<p>
Price:<br />
<input type="text" name="price" size="6" maxlength="6" value="<?php echo $price;?>" />
</p>
<p>
Description:<br />
<textarea name="description" rows="5" cols="30">
<?php echo $description;?></textarea>
</p>
<p>
<input type="submit" name="submit" value="Submit!" />
</p>
</form>
<?php
if (isset($_POST['submit'])) {
$rowID = $_POST['rowID'];
$productid = $_POST['productid']; //this is line 32 and so on...
$name = $_POST['name'];
$price = $_POST['price'];
$description = $_POST['description'];
}
试试:
当您生成
时,应该存在问题。我打赌变量$name
,$price
是NULL
或空字符串,当将它们回送到
字段的值中时。浏览器不会发送空输入字段,因此$\u POST
将不会有其键
不管怎么说,你可以和我核实一下
使用以下各项测试变量:
if(设置($\u POST['key'])$variable=$\u POST['key']:$variable=NULL
您最好将其设置为NULL
,因为
NULL值表示没有值的变量
显然,html表单中缺少索引“productid”。
首先检查html输入。例如
但这将处理PHP当前引发的错误。
$rowID = isset($_POST['rowID']) ? $_POST['rowID'] : '';
$productid = isset($_POST['productid']) ? $_POST['productid'] : '';
$name = isset($_POST['name']) ? $_POST['name'] : '';
$price = isset($_POST['price']) ? $_POST['price'] : '';
$description = isset($_POST['description']) ? $_POST['description'] : '';
嘿,发生这种情况是因为你试图在赋值之前显示值
只需填写值并提交表单,它将显示正确的输出
或者你可以在表单标签下面写你的php代码
它将在没有任何错误的情况下运行此错误在方法属性(有效传递方法)的某个时间发生
错误选项:
method=“get”但由$Fname=$\u POST[“name”]调用;
或
method="post" but called by $Fname = $_GET["name"];
更多信息请访问要删除此错误,在html表单中,您应该在enctype
中执行以下操作:
<form enctype="multipart/form-data">
以下是导致该错误的原因,即如果您从enctype中的表单数据开始,那么您应该从multipart开始:
<form enctype="form-data/multipart">
试试看
如果您使用的是wamp服务器,那么我建议您使用xampp服务器。
你。我在不到一分钟的时间内得到了这个错误,但我通过使用(isset)函数解决了这个问题。我没有错。
然后我删除了(isset)函数,我没有看到任何错误
顺便说一下,我正在使用xampp服务器,这是因为您的PHP代码在表单发布之前就被执行了
为了避免这种情况,将PHP代码封装在下面的if语句中,它将处理其余的代码,而无需为每个变量设置if语句
if(isset($_POST) && array_key_exists('name_of_your_submit_input',$_POST))
{
//process PHP Code
}
else
{
//do nothing
}
您是否有多个
标记?打印整个$\u POST数组,查看索引和值,然后查看您得到的var\u dump($\u POST)代码>@Mian_Khurram_Ijaz提交时,输出仅显示rowID变量。数组([rowID]=>Oranges[submit]=>submit!)@CodeCaster No是唯一的表单。变量不是empy。所有输入文本显示从数据库检索的数据。我试图做的是修改数据并用新值更新db(当然是在解决这个问题之后,否则db会更新并删除行,因为在按下“提交”之后变量中没有值。正是我在寻找的!对于最近来到这里的人来说,PHP7带来了null coalesce操作符,因此可以简化示例:$name=$\u POST['name']?“任何默认值,但可能为null”;
oooh-请用英语回答;-)这是Akshat Maltare给出的非常符合逻辑的答案。我在一个完全不同的表格上有一个类似的问题,我使用了这篇文章,表格工作得非常完美。谢谢你,阿克沙。甚至在我在php表单上尝试它之前,我就觉得它是合乎逻辑的,是的,它很好。我指的是表单发布之前执行的PHP代码。
if(isset($_POST) && array_key_exists('name_of_your_submit_input',$_POST))
{
//process PHP Code
}
else
{
//do nothing
}