【问题标题】:Undefined index error PHP未定义的索引错误 PHP
【发布时间】:2012-05-23 17:20:15
【问题描述】:

我是 PHP 新手,遇到了这个错误:

注意:未定义索引:/var/www/test/modifyform.php 中的 productid 第 32 行

注意:未定义索引:名称在 /var/www/test/modifyform.php 上线 33

注意:未定义索引:价格在 /var/www/test/modifyform.php 上线 34

注意:未定义索引:/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'];

}

在那之后我要做的(或者至少我正在尝试)是更新 MySQL 中的一个表。 我真的不明白为什么 $rowID 被定义而其他变量没有。

感谢您抽出宝贵时间回答我。 干杯!

【问题讨论】:

  • 你有多个&lt;form&gt;标签吗?
  • 对整个 $_POST 数组执行 print_r 并查看索引和值
  • 尝试这样做,看看你会得到什么var_dump($_POST);
  • @Mian_Khurram_Ijaz 输出仅显示提交时的 rowID 变量。Array ( [rowID] => Oranges [submit] => Submit!)
  • @CodeCaster 不,是唯一的形式。

标签: php forms post undefined


【解决方案1】:

试试:

<?php

if (isset($_POST['name'])) {
    $name = $_POST['name'];
}

if (isset($_POST['price'])) {
    $price = $_POST['price'];
}

if (isset($_POST['description'])) {
    $description = $_POST['description'];
}

?>

【讨论】:

  • 正是我想要的!
  • 对于最近到达这里的人,PHP 7 带来了空合并运算符,因此可以简化示例:$name = $_POST['name'] ?? 'any default value, but probably null';
【解决方案2】:

显然,您的 html 表单中缺少索引“productid”。 首先检查您的 html 输入。例如&lt;input type="text" name="productid" value=""&gt; 但这将处理 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'] : '';

【讨论】:

    【解决方案3】:

    这是因为您的 PHP 代码在表单发布之前执行。

    为了避免这种情况,将您的 PHP 代码包装在后面的 if 语句中,它将处理其余的,无需为每个变量设置 if 语句

           if(isset($_POST) && array_key_exists('name_of_your_submit_input',$_POST))
            {
                 //process PHP Code
            }
            else
            {
                 //do nothing
             }
    

    【讨论】:

    • Akshat Maltare 给出了一个非常合乎逻辑的答案。我在完全不同的表格上遇到了类似的问题,我使用了给出的这篇文章,表格效果很好。谢谢阿克沙特。甚至在我在我的 php 表单上尝试它之前,这对我来说听起来很合乎逻辑,是的,它很好。我指的是在表单发布之前执行的 PHP 代码。
    【解决方案4】:

    试试

    <?php
    
      $rowID=$productid=$name=$price=$description="";  
    
       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'];
    
    }
    

    【讨论】:

      【解决方案5】:

      应该有问题,当你生成&lt;form&gt;。我打赌变量$name$priceNULL 或当您将echo 放入&lt;input&gt; 字段的value 时为空字符串。浏览器不会发送空输入字段,因此$_POST 将没有它们的键。

      无论如何,您可以通过isset() 进行检查。

      测试变量如下:

      if(isset($_POST['key'])) ? $variable=$_POST['key'] : $variable=NULL

      你最好把它设置为NULL,因为

      NULL 值表示没有值的变量。

      【讨论】:

      • 变量不是空的。所有输入文本都显示从数据库检索到的数据。我尝试做的是修改该数据并用新值更新数据库(当然在解决这个问题之后,否则数据库会更新删除行,因为在按下“提交!”后变量中没有值。
      【解决方案6】:

      嘿,这是因为你试图在分配之前显示价值 你只需填写值并提交表单它将显示正确的输出 或者你可以在表单标签下面写你的 php 代码 它会运行没有任何错误

      【讨论】:

      • 哦-请用英语回答;-)
      【解决方案7】:

      如果您使用的是 wamp 服务器,那么我建议您使用 xampp 服务器。 你 。我在不到一分钟的时间内收到了这个错误,但我通过使用 (isset) 函数解决了这个问题。我没有错误。 然后我删除(isset)函数,我没有看到任何错误。

      顺便说一句,我使用的是 xampp 服务器

      【讨论】:

        【解决方案8】:

        此错误有时发生在方法属性(有效的传递方法) 错误选项: method="get" 但由 $Fname = $_POST["name"]; 调用 或

               method="post" but  called by  $Fname = $_GET["name"];
        

        更多信息请访问http://www.doordie.co.in/index.php

        【讨论】:

          【解决方案9】:

          要消除此错误,在您的 html 表单中,您应该在 enctype 中执行以下操作:

          <form  enctype="multipart/form-data">
          

          以下是导致该错误的原因,即如果您从 enctype 中的 form-data 开始,那么您应该从 multipart 开始:

          <form enctype="form-data/multipart">
          

          【讨论】:

            猜你喜欢
            • 2011-02-21
            • 2016-08-17
            • 1970-01-01
            • 2012-06-27
            • 1970-01-01
            • 2019-04-03
            • 2015-03-06
            • 2018-04-14
            相关资源
            最近更新 更多