我只想在程序运行时出现重复错误。
我提出一个条件,如果用户已经注册了一名学生(匹配studId
和sy
),则会给我一个错误,例如"您已经完成了注册。&# 34;否则,它会执行插入查询。在我的表格中,我插入了studId(c-1111)
& sy(2011)
只是例如有一个老学生正在注册,但在我点击我的按钮的情况下#34; Generate&保存",即使sy
是2013年,它始终会向我提供错误消息,其中包含相同的studId
c-1111。这是我的代码。请帮我解决我的计划。
for($i=0; $i <= $row->studId; $i++){
$generated_pass = genpass($i);
echo "<td>$generated_pass</td>";
$year = date("Y");
$info = $mysqli->query("SELECT studId, sy FROM tbl_student WHERE
studId='".$row->studId."' AND sy= '$year'");
if($info){
echo "<script type='text/jscript'>
alert('You already did the enrollment.')
window.location='admin.php';</script>";
}
else {
$insert = $mysqli->query("INSERT IGNORE INTO tbl_student (studId,
fname, lname, mname, password, dob, address, f_fname, f_mname,
f_lname, m_fname, m_mname, m_lname, departmentId, sy) VALUES
('".$row->studId."', '".$row->fname."', '".$row->lname."',
'".$row->mname."', '".md5($generated_pass)."', '".$row->dob."',
'".$row->address."', '".$row->f_fname."', '".$row->f_mname."',
'".$row->f_lname."', '".$row->m_fname."', '".$row->m_mname."',
'".$row->m_lname."', '".$row->departmentId."', '".$row->sy."')");
}
}
答案 0 :(得分:0)
是否可以选择添加一个MySQL表约束,即studID和sy是唯一键?这样,任何插入重复的查询都将失败,PHP将收到它可以处理的错误。
编辑:应该删除IGNORE关键字以使上述工作正常,因为它实质上要求不遵守约束。 http://dev.mysql.com/doc/refman/5.1/en/constraint-primary-key.html
答案 1 :(得分:0)
请调试一下
$info = $mysqli->query("SELECT studId, sy FROM tbl_student WHERE studId='".$row->studId."' AND sy= '$year'");
和$ info返回。
它可能是返回空数组,在这种情况下,如果($ info)不工作,那么你需要检查empty()
等