Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql中重复行的条目_Php_Mysql_Sql_Duplicates - Fatal编程技术网

Php Mysql中重复行的条目

Php Mysql中重复行的条目,php,mysql,sql,duplicates,Php,Mysql,Sql,Duplicates,我需要你帮我写剧本。我试图将值插入maintable,但在插入之前,我必须检查一行是否与插入的行完全匹配。如果存在匹配项,则应回显记录存在,如果不存在,则应继续并插入到表中。问题是它返回$duplicate为0,而实际上有一行与我在HTML页面中输入的条目相匹配,因此它继续并插入重复项。 请问有什么问题 { $query = mysql_query("SELECT m.matric_no, m.course_code, m semester_name, m.level, m.sessio

我需要你帮我写剧本。我试图将值插入maintable,但在插入之前,我必须检查一行是否与插入的行完全匹配。如果存在匹配项,则应回显记录存在,如果不存在,则应继续并插入到表中。问题是它返回$duplicate为0,而实际上有一行与我在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"; 
    }

请原谅我的格式,我是在手机上输入的,我并不是有意不尊重这个社区

您的格式有点乱,这就是为什么在出现错误时很难发现错误的原因。尝试坚持一致的格式样式。这应该可以做到:

$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());
}

您正在计算行数,如果没有找到与查询匹配的记录,则可能返回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());
}

是{在原始代码中使用echo$duplicate语句之前?请注意,如果无法将原始代码粘贴到此处,则几乎无法提供帮助。@jeroen是的,它是-这就是导致错误的原因。谢谢Jamie,它确实起到了作用,但在我的查询i和以前的查询中,我通常会选择我认为对che来说足够的列检查重复项,它以前工作得很好,为什么你认为这不起作用。谢谢你的回答。它很准确。谢谢Starx…$duplicate只是为了回显返回的行数,这样我就可以确保查询得到处理。但实际的问题是,你使用了“SELECT*”,这应该是用于选择的我觉得每个列都是必需的。它在其他一些脚本中对我起到了这种作用。为什么它在这里不起作用。谢谢你的回答,我非常感激。@dotman14,问题不是选择所有列或选择几个列。问题可能是由于mysql\u错误而发生的,mysql\u num\u rows>0没有捕获它。因此我使用了boolean表达式只是为了确定谢谢你的答案。实际上我做了“选择*”,从你提供的答案中,然后使用if$duplicates>0,它给了我相同的结果。什么可以使mysql\u now\u rows>0不被mysql\u错误捕获?谢谢你的帮助