在DB上插入记录时未定义的索引

时间:2012-01-25 11:58:56

标签: php mysql html xampp

我正在研究一个系统,我想检查一条记录是否存在。如果存在记录,则它不会记录数据,而是返回到表单。如果数据不存在,那么它将继续将数据记录到DB。

HTML表单:

 <form name="studentform" onSubmit="return validate_form ( );" action="queries/insert.php" method="post">

Student Number: <input type="text" name="studentnumber"/>
    College:
 <select name="college" id=a></select>

&nbsp;&nbsp;Course:
<select name="course" id=b></select>

 <input type="radio" name="status" value="regular" />Regular&nbsp;&nbsp;
<input type="radio" name="status" value="irregular" />Irregular 
    <br><br>
    <hr>
    <br>
   Name:
    <input type="text" name="lname"> &nbsp;
    <input type="text" name="fname"> &nbsp;
    <input type="text" name="mname">   


Address: 
<input type="text" name="address" />

<br><br>

 Gender: 
 <select name="gender">
<option value="">---</option>  
<option value="Male">Male</option>
<option value="Female">Female</option>
</select>



<input type="submit" value="Submit">
</form>

PHP表单:

 $query = ("SELECT studentnumber FROM students where studentnumber = '$_POST[studentnumber]'");
 $result=mysql_query($query);

 if($result)
    {
      if(mysql_num_rows($result) >= 1)
      { 
      echo "<script type='text/javascript'>alert('User already exist'); location.href = '../admin_home.php';</script>";
      }
      }
   else{

$sql="INSERT INTO students (studentnumber, college, course, status, lname, fname, mname, address, gender)
VALUES
('$_POST[studentnumber]','$_POST[college]','$_POST[course]','$_POST[status]','$_POST[lname]','$_POST[fname]','$_POST[mname]','$_POST[address]','$_POST[gender]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }

  echo "<script type='text/javascript'>alert('Record Successfully Added'); location.href = '../admin_home.php';</script>";
}

我不知道为什么但是我总是得到未定义的索引错误。也许我在某个地方做错了什么。谢谢!!

3 个答案:

答案 0 :(得分:1)

“Undefined index”指的是你的数组(可能是$ _POST),它应该是一个通知,而不是一个错误。你能发布确切的消息吗?

在此期间,切换第一行

$query = "SELECT studentnumber FROM students where studentnumber = '".mysql_real_escape_string($_POST['studentnumber'])."'";

此外,调试打印查询以确保它看起来像您期望的那样有用:

print $query."<br />";  // obviously

[edit]正如您现在发布的错误消息,它变得更加简单 - $ _POST ['studentnumber']不存在。检查你的表格。

调试发布结果的好方法是使用代码

print '<pre>';
print_r($_POST);
print '</pre>';

答案 1 :(得分:1)

问题出在您的查询中:

 $query = ("SELECT studentnumber FROM students where studentnumber = '$_POST[studentnumber]'");

$_POST[studentnumber]不正确。它必须是$_POST['studentnumber']。注意密钥周围的引号。

我建议这样做:

$query = sprintf("SELECT studentnumber FROM students where studentnumber = '%s'"
                  , mysql_real_escape_string($_POST['studentnumber']));

相应地更改所有查询。

答案 2 :(得分:0)

试试这个:

if( isset($_POST['submit']) ){

  $student_num = mysql_real_escape_string( $_POST['studentnumber'] );
  // Set all the require form fields here with mysql_real_escape_string() fun

  if( !empty($student_num) ){
    // Your Query Here
  }
  else{
   echo 'Value not Set in Student Number Field!';
  }
}

修改:首先检查isset($_POST['submit'])之后的所有字段,以便确认所有值是否正确获取

获取所有必需值后

开始查询