Неопределенный индекс при вставке записей в БД - PullRequest
1 голос
/ 25 января 2012

Я работаю в системе и хочу проверить, существует ли запись.Если запись существует, она не будет записывать данные и вместо этого вернется в форму.Если данные не существуют, то они продолжат запись данных в БД.

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 ]

1 голос
/ 25 января 2012

Проблема в ваших запросах:

 $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']));

Измените все ваши запросы соответственно.

1 голос
/ 25 января 2012

«Неопределенный индекс» относится к вашему массиву (вероятно, $ _POST), и это должно быть уведомление, а не ошибка. Вы можете опубликовать точное сообщение?

Тем временем переключите свою первую строку на

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

Кроме того, для отладки полезно распечатать запрос, чтобы убедиться, что он выглядит так, как вы ожидаете:

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

[править] Как только вы опубликовали сообщение об ошибке, оно становится намного проще - $ _POST ['studentnumber'] не существует. Проверьте вашу форму.

Хороший способ отладки опубликованных результатов - использовать код

<code>print '<pre>';
print_r($_POST);
print '
';
0 голосов
/ 25 января 2012

попробуйте с этим:

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']), чтобы подтвердить, что все значения правильно получены или нет

после получения всех необходимых значений запустите ваш запрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...