在Mysql中输入重复行

时间:2012-03-31 21:51:20

标签: php mysql sql duplicates

我需要你的脚本帮助。我正在尝试将值插入maintable,但在插入之前,我必须检查一行是否与我插入的行完全匹配。如果有匹配则它应该echo Record Exists,如果没有,它应该继续并插入表中。问题是它正在为0返回$duplicate,当实际上有一行与我在HTML页面中输入的条目相匹配时,它会继续并插入副本。 请问这可能是什么问题?

{
    $query = mysql_query("SELECT m.matric_no, m.course_code, m semester_name, m.level, m.session 
                          FROM  maintable AS m 
                          WHERE m.matric_no = '".$matric_no."'
                          AND m.course_code = '".$course_code."'
                          AND m.semester_name = '". $semester_name."'
                          AND m.level = '".$level."'
                          AND m.session = '".$session."'") ;

    $duplicate = mysql_num_rows($query);

    if ($duplicate > 0 ) 
        echo "$duplicate" ;
    {
        echo "Record Exists"     
    }
    else
    {

        $query = "INSERT INTO maintable (matric_no, course_code, semester_nam,          session, level) 
                   VALUES ('".$matric_no."', 
                       '".$course_code."',
                       '".$semester_name."',
                       '".$session."', 
                       '".$level."')" ;
        mysql_query($query) or
            die (mysql_error());   

        echo"Record Inserted"; 
    }

请原谅我的格式,我在手机上打字,我并不是说不尊重这个社区。

2 个答案:

答案 0 :(得分:1)

你的格式有点遍布,这就是为什么你发现错误很难发现错误的原因。尝试坚持一致的格式样式。这应该可以解决问题:

$check = mysql_query("SELECT * FROM maintable WHERE matric_no = '$matric_no' AND course_code = '$course_code' AND m.semester_name = '$semester_name' AND m.level = '$level' AND m.session = '$session'");

if(mysql_num_rows($check))
{
   echo 'Record exists!';
}
else
{
   $query = "INSERT INTO maintable (matric_no, course_code, semester_nam, session, level) VALUES ('$matric_no','$course_code','$semester_name','$session','$level')";
   mysql_query($query) or die (mysql_error());
}

答案 1 :(得分:0)

您正在计算行数,如果找不到与您的查询匹配的记录,则可能会返回0。但是,如果代码块

,则会混合
if ($duplicate > 0 ) 
    echo "$duplicate" ;
{
    echo "Record Exists"     
}

应该是

if ($duplicate > 0 )         
{
    echo "$duplicate" ;
    echo "Record Exists"     
}

我检查了你的代码,似乎有效。尽量简化它

$result = mysql_query("SELECT * FROM maintable WHERE matric_no = '$matric_no' AND course_code = '$course_code' AND m.semester_name = '$semester_name' AND m.level = '$level' AND m.session = '$session'");

if(!mysql_num_rows($result))
{
   $query = "INSERT INTO maintable (matric_no, course_code, semester_nam, session, level) VALUES ('$matric_no','$course_code','$semester_name','$session','$level')";
   mysql_query($query) or die (mysql_error());
}