我正在研究一个系统,我想检查一条记录是否存在。如果存在记录,则它不会记录数据,而是返回到表单。如果数据不存在,那么它将继续将数据记录到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>
Course:
<select name="course" id=b></select>
<input type="radio" name="status" value="regular" />Regular
<input type="radio" name="status" value="irregular" />Irregular
<br><br>
<hr>
<br>
Name:
<input type="text" name="lname">
<input type="text" name="fname">
<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>";
}
我不知道为什么但是我总是得到未定义的索引错误。也许我在某个地方做错了什么。谢谢!!
答案 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'])
之后的所有字段,以便确认所有值是否正确获取
开始查询