未定义的索引名称 1 和未定义的索引名称 2

undefined index name1 and Undefined index name2

提问人:Mohd Tazammul 提问时间:4/16/2018 最后编辑:RobertMohd Tazammul 更新时间:4/16/2018 访问量:1246

问:

以下是发生错误的两个文件:

html_form.html

<html>
    <body>
        <center>
            <h1>Admission Form</h1>
            <br>
            <form action="php_register.php" name="registration">
            Firstname: <input type="text" name="name1" placeholder="Enter Firstname"/>
            <br>
            Lastname: <input type="text" name="name2" placeholder="Enter Lastname"/><br>
                <input type="submit" value="submit">
            </form>
        </center>
    </body>
</html>

php_register.php

<?php
     $fname=$_POST['name1'];
     $lname=$_POST['name2'];

    $conn=mysqli_connect("localhost","root","","test");

     if (isset($fname) && isset($lname))
      {
         mysqli_query($conn, "insert into test_table(firstname,lastname) 
         values ('$fname','$lname')");
      }
      else
         echo "<br> Errror....Values are not set in variables...!!!";
?>

( ! )注意:未定义索引:第 2 行 C:\wamp2\www\PHP_project\php_register.php 中的 name1 调用堆栈

时间记忆功能位置

1 0.0022 131712 {main}( ) ...\php_register.php:0

( ! )注意:未定义的索引:第 3 行 C:\wamp2\www\PHP_project\php_register.php 中的 name2 调用堆栈

时间记忆功能位置

1 0.0022 131712 {main}( ) ...\php_register.php:0

呃......未在变量中设置值...!!

php 未定义索引

评论

1赞 CBroe 4/16/2018
PHP 的可能重复:“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”

答:

2赞 Simon R 4/16/2018 #1

您需要添加到您的代码中。method="post"<form>

此外,您可以检查之前是否在页面上设置了这些值,以确保脚本将成功运行。php_register.php

例如

if (empty($_POST['name1']) || empty($POST['name2']) { 
    // some kind of error setting and redirecting back maybe
}
0赞 Gufran Hasan 4/16/2018 #2

默认情况下,表单方法是 GET,但您正在尝试获取值 By 。$_POST

您没有定义表单 POST 方法,然后您可以通过以下方式获取值:$_GET$_REQUEST

$_GET['name1'];
$_GET['name2'];

$_REQUEST['name1'];
$_REQUEST['name2'];

如果你想使用,那么你应该定义形式$_POSTmethod="post"

如果你对表单方法一无所知,这是一个更好的使用方式。通过,您可以获得两个类型值。$_REQUEST$_REQUEST

例:

$fname=isset($_POST['name1'])?$_POST['name1']:'';
 $lname=isset($_POST['name2'])?$_POST['name2']:'';

$conn=mysqli_connect("localhost","root","","test");

 if (!empty($fname) && !empty($lname))
  {
     mysqli_query($conn, "insert into test_table(firstname,lastname) 
     values ('$fname','$lname')");
  }
  else
     echo "<br> Errror....Values are not set in variables...!!!";

评论

0赞 Mohd Tazammul 4/16/2018
现在我在html文件中将方法定义为method=“post”,但仍然有同样的问题......
0赞 Gufran Hasan 4/16/2018
检查它 isset($_REQUEST['name2'])。避免此类错误是个好习惯。
0赞 Mohd Tazammul 4/16/2018
是的,现在它工作了。我将 $_POST 方法替换为 $_REQUEST,现在它正在插入记录......非常感谢 Gurfan Hasan bhai...我已经为这个问题苦恼了好几天,你解决了它。再次感谢.....
0赞 Leslie 4/16/2018 #3

你没有以形式声明 POST 或 GET,但你使用 $_POST['name1'] 来获取值,这就是发生错误的地方。

评论

0赞 Leslie 4/16/2018
哦,好吧,那么你应该var_dump()你发布的数据,并找出哪里出了问题,如果$_POST['name1'] == {your data},我们可以从前端消除问题。
0赞 Mohd Tazammul 4/16/2018
是的,现在它工作了。我将 $_POST 方法替换为 $_REQUEST,现在它正在插入记录......
0赞 Leslie 4/16/2018
如果您对我 answer.it 感到满意,我们将不胜感激地采用它。