我需要你的脚本帮助。我正在尝试将值插入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";
}
请原谅我的格式,我在手机上打字,我并不是说不尊重这个社区。
答案 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());
}