如何获得重复的错误

时间:2013-02-20 11:31:36

标签: php

我只想在程序运行时出现重复错误。

我提出一个条件,如果用户已经注册了一名学生(匹配studIdsy),则会给我一个错误,例如"您已经完成了注册。&# 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."')");
                }
                    }

2 个答案:

答案 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()