0

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

我做了一个条件,如果用户已经注册了一个学生(匹配studIdsy),它会给我一个错误,比如“你已经注册了”。否则,它将执行插入查询。在我的表中,我插入了一个studId(c-1111)sy(2011),例如,有一个老学生正在/正在注册,但是在我的情况下,当我单击“生成并保存”按钮时,它总是给我错误消息,即使sy是 2013 年与studIdc-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."')");
                }
                    }
4

2 回答 2

0

是否可以选择添加 studID 和 sy 是唯一键的 MySQL 表约束?那样的话,任何插入重复的查询都会失败,PHP 会得到一个它可以处理的错误。

编辑:应该删除 IGNORE 关键字才能使上述内容起作用,因为它本质上要求不遵守约束。http://dev.mysql.com/doc/refman/5.1/en/constraint-primary-key.html

于 2013-02-20T11:36:08.607 回答
0

请调试什么

$info = $mysqli->query("SELECT studId, sy FROM tbl_student WHERE studId='".$row->studId."' AND sy= '$year'"); 

$info 返回。在这种情况下,如果你的 if($info) 不起作用,那么它可能会返回空数组,那么你需要检查empty()etc

于 2013-02-20T11:42:49.253 回答