mysql / php错误的逻辑与sql语句

时间:2013-01-04 22:01:10

标签: php mysql

我正在做一个能够让用户批准或撤销申请(如奖学金)的项目。但我似乎无法找出为什么它没有做我想做的事情。请检查下面的代码:

$try = mysql_query("UPDATE new_applicants SET ApplicantStatusId='$status', DateManaged = NOW() WHERE ApplicantId='$id'") or die(mysql_error()); 

$try1 = mysql_fetch_assoc($try);

$status1 = $try1["ApplicantStatusId"];

if( $status1 == 2 ){
header('location: ../employeepage.php');
exit();
}

else{

$sql1 = "INSERT INTO scholar_profile (Firstname, Middlename, Lastname, Address, EmailAddress,  BirthDate, BirthPlace, Religion, Age, Gender, ContactNo, Skill, Talent, LevelId, GWA, CategoryId, StatusId, SchoolId, BarangayId) SELECT Firstname, Middlename, Lastname, Address, EmailAddress, BirthDate, BirthPlace, Religion, Age, Gender, ContactNo, Skill, Talent, LevelId, GWA, CategoryId, StatusId, SchoolId, BarangayId
FROM new_applicants
WHERE new_applicants.ApplicantId = '$id'" or die(mysql_error()); 

}

当appsstatus变为2 =撤销时,不应将数据复制到scholar_profile。但是当我尝试这个时,它仍然会复制。这有什么问题?感谢。

3 个答案:

答案 0 :(得分:1)

您正在更新表格,因此mysql_fetch_assoc不会返回任何内容。即$status1将为null。如果要选择该数据(ApplicantStatusID,...),则必须使用SELECT语句。

答案 1 :(得分:0)

您只需更改SQL语句的where子句:

WHERE new_applicants.ApplicantId = '$id' and new_Applicants.ApplicantStatusId <> 2"

然后你不必担心php中的逻辑。

答案 2 :(得分:0)

您在$try1 = mysql_fetch_assoc($try);声明中提取UPDATE 这不是真的。

fetch仅适用于SELECT个陈述