Php 解决未定义的索引错误

Php 解决未定义的索引错误,php,mysql,Php,Mysql,我的php文件中有以下代码: $p_adminType = $_POST['adminType']; $p_adminUserID = $_POST['userID']; $p_adminUserPass = $_POST['userPass']; $p_firstName = $_POST['adminFirstName']; $p_lastName = $_POST['adminLastName']; 然后,当我通过单击html文件中的“提交”按钮来执行文件时,我会收到一个错误通知,上面说

我的php文件中有以下代码:

$p_adminType = $_POST['adminType'];
$p_adminUserID = $_POST['userID'];
$p_adminUserPass = $_POST['userPass'];
$p_firstName = $_POST['adminFirstName'];
$p_lastName = $_POST['adminLastName'];
然后,当我通过单击html文件中的“提交”按钮来执行文件时,我会收到一个错误通知,上面说:

Notice: Undefined index: userID in C:\wamp\www\CaNeCo\CaNeCo_Admin_Reg.php on line 19
Notice: Undefined index: userPass in C:\wamp\www\CaNeCo\CaNeCo_Admin_Reg.php on line 20
Notice: Undefined index: adminFirstName in C:\wamp\www\CaNeCo\CaNeCo_Admin_Reg.php on line 21
您可以从代码中看到第19、20和21行的位置。我试着向代码中添加isset()函数,就像从其他网站/论坛上读到的一样,但当我这样做时,它并不能解决我的问题。它只隐藏错误消息,变量仍然为空

我怎样才能解决这个问题?另外,我只是想知道为什么它只发生在5个声明中的3个<代码>$p_adminType=$\u POST['adminType']和
$p_lastName=$\u POST['adminLastName']只工作正常,但其他3个不工作?有人能告诉我这件事吗

这是我拥有的html文件:

<form method="post" action="CaNeCo_Admin_Reg.php">
  <table width="400">
  <tr>
      <td><b>Log-in Information:</b></td>
  </tr>
  <tr>
      <td>&nbsp;</td>
  </tr>
  <tr>
      <td>Administrator Type:</td>
      <td>
        <select name="adminType" id="adminType">
        <option value="0">Please Select</option>
        <option value="1">Super Administrator</option>
        <option value="2">Administrator</option>
        <option value="3">Secretary</option>
        <option value="4">Viewer</option>
        </select>
      </td>
  </tr>
  <tr>
      <td>User ID: </td>
      <td><input type="text" name:"userID" id="adminUserID" placeholder="User I.D." maxlength="20" size="35"/></td>
  </tr>
  <tr>
      <td>Password: </td>
      <td><input type="password" name:"userPass" id="adminUserPass" placeholder="Password" maxlength="25" size="35"/></td>
  </tr>
  <tr>
      <td>Repeat Password:</td>
      <td><input type="password" name="repeatPass" id="adminRepeatPass" placeholder="Repeat Password" maxlength="25" size="35"/></td>
  </tr>
  <tr>
      <td>&nbsp;</td>
   </tr>
   <tr>
      <td colspan="25"><b>Personal Information:</b></td>
   </tr>
   <tr>
      <td>&nbsp;</td>
   </tr>
   <tr>
      <td>First Name: </td>
      <td><input type="text" name:"adminFirstName" id="adminFirstName" placeholder="First Name" maxlength="20" size="35"/></td>
   </tr>
   <tr>
      <td>Last Name: </td>
      <td><input type="text" name="adminLastName" id="adminLastName" placeholder="Last Name" maxlength="25" size="35"/></td>
   </tr>
   <tr>
      <td>&nbsp;</td>
   </tr>
   <tr>
      <td colspan="50"><center><input type="submit" value="Submit"/></center></td>
   </tr>
</table>

登录信息:
管理员类型:
请选择
超级管理员
管理员
秘书
观众
用户ID:
密码:
重复密码:
个人资料:
名字:
姓氏:

首先检查$\u POST是否保留某些值

因此,在代码上方使用打印($\u POST)
它可以帮助您识别错误,

可能会抛出未定义的索引,因为您没有在html表单中定义这些名称。您的表单必须如下所示:

<input type='text' name='adminType'/>
<input type='text' name='userID'/>
<input type='text' name='userPass'/>
<input type='text' name='adminFirstName'/>
<input type='text' name='adminLastName'/>

或者您正在使用的任何输入
类型
。您还应该发布表单代码以提供更多信息

检查您是否在html表单中准确定义了这些名称

更新


您发布了表单代码并看到了错误。您使用的是
,而不是使用
=
将值指定给您的
名称
属性以进行输入。如果您查看一下,您正在接收到服务器中的仅有2个元素会正确地发送到服务器,因为您定义了它们的name属性,如
name={value}
,但其他3个属性定义为
name:{value}
。带有
的赋值:
在HTML中不存在,并且表单不知道如何发送带有该属性的元素,因此您的服务器永远不会收到带有名为
userID
的属性的元素,因为
userID
没有如前面所述定义(
name={value}
).

对于检查现有索引,您可以使用诸如array\u key\u exists或isset之类的php函数,如果未找到索引,则必须将变量初始化为空(null或空字符串):


顺便说一句,这些名字看起来很混乱

我认为你应该重写这些声明:

$p_adminType = $_POST['adminType'];
$p_adminUserID = $_POST['userID'];
$p_adminUserPass = $_POST['userPass'];
$p_firstName = $_POST['adminFirstName'];
$p_lastName = $_POST['adminLastName'];
进入:

$p_adminType = $_POST['type'];
$p_adminUserID = $_POST['userID'];
$p_adminUserPass = $_POST['userPass'];
$p_adminFirstName = $_POST['firstName'];
$p_adminLastName = $_POST['lastName'];
或:

或:

或:


您的html应该如下所示:-

   <form method="post" action="CaNeCo_Admin_Reg.php">
   <table width="400">
    <tr>
        <td><b>Log-in Information:</b></td>
    </tr>
    <tr>
       <td>&nbsp;</td>
    </tr>
    <tr>
     <td>Administrator Type:</td>
     <td>
       <select name="adminType" id="adminType">
       <option value="0">Please Select</option>
       <option value="1">Super Administrator</option>
       <option value="2">Administrator</option>
       <option value="3">Secretary</option>
       <option value="4">Viewer</option>
       </select>
    </td>
  </tr>
  <tr>
   <td>User ID: </td>
   <td><input type="text" name="userID" id="adminUserID" placeholder="User I.D."         maxlength="20" size="35"/></td>
 </tr>
  <tr>
  <td>Password: </td>
  <td><input type="password" name="userPass" id="adminUserPass" placeholder="Password" maxlength="25" size="35"/></td>
 </tr>
  <tr>
     <td>Repeat Password:</td>
    <td><input type="password" name="repeatPass" id="adminRepeatPass" placeholder="Repeat Password" maxlength="25" size="35"/></td>
  </tr>
  <tr>
     <td>&nbsp;</td>
   </tr>
    <tr>
    <td colspan="25"><b>Personal Information:</b></td>
   </tr>
    <tr>
  <td>&nbsp;</td>
  </tr>
   <tr>
     <td>First Name: </td>
       <td><input type="text" name="adminFirstName" id="adminFirstName" placeholder="First Name" maxlength="20" size="35"/></td>
     </tr>
   <tr>
   <td>Last Name: </td>
   <td><input type="text" name="adminLastName" id="adminLastName" placeholder="Last Name" maxlength="25" size="35"/></td>
  </tr>
  <tr>
     <td>&nbsp;</td>
  </tr>
  <tr>
    <td colspan="50"><center><input type="submit" value="Submit"/></center></td>
  </tr>
</table>

登录信息:
管理员类型:
请选择
超级管理员
管理员
秘书
观众
用户ID:
密码:
重复密码:
个人资料:
名字:
姓氏:

并且变量仍然为空
如果不传递,脚本如何知道值应该是什么?
var\u dump($\u POST)
并检查得到的变量。首先,您需要确保在html页面上为元素指定的名称是否与在php中访问时指定的名称相同code@DevalShah-我已经添加了我的表单代码。@dreamweiver-我已经仔细检查过了,所以我认为这没有问题区域。
array\u key\u exists
的工作速度比
isset
慢。例如,
$p\u adminType=isset($\u POST['adminType'])$_POST['adminType']:''是最好的。是的,同样,isset for$\u POST['adminType']=null将为false。我将当前示例用于更简单的视图,
$\u POST
不可能包含NULL。只有字符串(包括空字符串,
)或数组。我的命名方案是这样的原因是因为我发现这样引用更容易。当变量的名称不同时,我往往很难记住它们,特别是当我的代码中已经有很多变量时。我已经仔细检查了这个区域。“所以我很确定这没有问题。”杰罗,我的错,我重写了我的答案。我不想提及那件事。如果属性中有错误,则在为输入指定名称时使用的是
,而不是
=
。要分配值,请使用
=
,不要使用
谢谢!我没有看到那一个有一件事我讨厌html代码。它不会告诉您的代码中是否有错误。哈哈@Jairo,下次我尝试使用代码时,您需要更加小心。即使是这段代码也显示了同样的错误。
$p_type = $_POST['adminType'];
$p_userID = $_POST['adminUserID'];
$p_userPass = $_POST['adminUserPass'];
$p_firstName = $_POST['adminFirstName'];
$p_lastName = $_POST['adminLastName'];
$p_type = $_POST['type'];
$p_userID = $_POST['userID'];
$p_userPass = $_POST['userPass'];
$p_firstName = $_POST['firstName'];
$p_lastName = $_POST['lastName'];
$p_adminType = $_POST['adminType'];
$p_adminUserID = $_POST['adminUserID'];
$p_adminUserPass = $_POST['adminUserPass'];
$p_adminFirstName = $_POST['adminFirstName'];
$p_adminLastName = $_POST['adminLastName'];
   <form method="post" action="CaNeCo_Admin_Reg.php">
   <table width="400">
    <tr>
        <td><b>Log-in Information:</b></td>
    </tr>
    <tr>
       <td>&nbsp;</td>
    </tr>
    <tr>
     <td>Administrator Type:</td>
     <td>
       <select name="adminType" id="adminType">
       <option value="0">Please Select</option>
       <option value="1">Super Administrator</option>
       <option value="2">Administrator</option>
       <option value="3">Secretary</option>
       <option value="4">Viewer</option>
       </select>
    </td>
  </tr>
  <tr>
   <td>User ID: </td>
   <td><input type="text" name="userID" id="adminUserID" placeholder="User I.D."         maxlength="20" size="35"/></td>
 </tr>
  <tr>
  <td>Password: </td>
  <td><input type="password" name="userPass" id="adminUserPass" placeholder="Password" maxlength="25" size="35"/></td>
 </tr>
  <tr>
     <td>Repeat Password:</td>
    <td><input type="password" name="repeatPass" id="adminRepeatPass" placeholder="Repeat Password" maxlength="25" size="35"/></td>
  </tr>
  <tr>
     <td>&nbsp;</td>
   </tr>
    <tr>
    <td colspan="25"><b>Personal Information:</b></td>
   </tr>
    <tr>
  <td>&nbsp;</td>
  </tr>
   <tr>
     <td>First Name: </td>
       <td><input type="text" name="adminFirstName" id="adminFirstName" placeholder="First Name" maxlength="20" size="35"/></td>
     </tr>
   <tr>
   <td>Last Name: </td>
   <td><input type="text" name="adminLastName" id="adminLastName" placeholder="Last Name" maxlength="25" size="35"/></td>
  </tr>
  <tr>
     <td>&nbsp;</td>
  </tr>
  <tr>
    <td colspan="50"><center><input type="submit" value="Submit"/></center></td>
  </tr>
</table>