Php Mysql中重复行的条目
我需要你帮我写剧本。我试图将值插入maintable,但在插入之前,我必须检查一行是否与插入的行完全匹配。如果存在匹配项,则应回显记录存在,如果不存在,则应继续并插入到表中。问题是它返回$duplicate为0,而实际上有一行与我在HTML页面中输入的条目相匹配,因此它继续并插入重复项。 请问有什么问题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
{
$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错误捕获?谢谢你的帮助