要更新fafang表和shebei表,先查找fafang表所有数据,用while循环每次读出一条记录,然后根据字段判断是否更新,若更新,则更新fafang表之后,用sbid查找shebei表,再对shebei表进行更新。但不知为何,执行之后,只能更新fafang表中一条记录和shebei表中一条记录。如果需要更新的记录有3条,则需要执行3次。问题出在哪里?$res=mysql_query("select * from fafang order by ffriqi");
while($row=mysql_fetch_array($res)){
$jintian=date('Y-m-d',time());
$ffid=$row['ffid'];
$sbid=$row['sbid'];
$ffriqi=$row['ffriqi'];
$ffzhuangtai=$row['ffzhuangtai'];
$guihuanriqi=$row['guihuanriqi'];
//当前时间早于发放日期,则发放状态为“待发放”
if(strtotime($jintian) < strtotime($ffriqi) && $ffzhuangtai != '待发放'){
mysql_query("update fafang set ffzhuangtai='待发放' where ffid='$ffid'");
}
//当前时间处于发放日期与归还日期之间
if(strtotime($jintian) >= strtotime($ffriqi) && strtotime($jintian) <= strtotime($guihuanriqi) && $ffzhuangtai != '外借中' && $ffzhuangtai != '维修'){
mysql_query("update fafang set ffzhuangtai='外借中' where ffid='$ffid'");
//更新设备表
$res=mysql_query("select cunfangfangshi from shebei where sbid='$sbid' ");
$cunfangfangshi=mysql_result($res,0,0);
if($cunfangfangshi=="固定"){
$rs=mysql_query("update shebei set sbzhuangtai='不可用' where sbid='$sbid' ");
}
if($cunfangfangshi=="可移动"){
$rs=mysql_query("update shebei set sbzhuangtai='外借' where sbid='$sbid' ");
}
}
//当前日期晚于归还日期,则发放状态为“已归还”
if(strtotime($jintian) > strtotime($guihuanriqi) && $ffzhuangtai != '已归还'){
mysql_query("update fafang set ffzhuangtai='已归还' where ffid='$ffid'");
//var_dump("update fafang set ffzhuangtai='已归还' where ffid='$ffid'");
//更新设备表
$res=mysql_query("select cunfangfangshi from shebei where sbid='$sbid' ");
$cunfangfangshi=mysql_result($res,0,0);
if($cunfangfangshi=="固定"){
$rs=mysql_query("update shebei set sbzhuangtai='可用' where sbid='$sbid' ");
}
if($cunfangfangshi=="可移动"){
$rs=mysql_query("update shebei set sbzhuangtai='在库' where sbid='$sbid' ");
}
}
}
while($row=mysql_fetch_array($res)){
$jintian=date('Y-m-d',time());
$ffid=$row['ffid'];
$sbid=$row['sbid'];
$ffriqi=$row['ffriqi'];
$ffzhuangtai=$row['ffzhuangtai'];
$guihuanriqi=$row['guihuanriqi'];
//当前时间早于发放日期,则发放状态为“待发放”
if(strtotime($jintian) < strtotime($ffriqi) && $ffzhuangtai != '待发放'){
mysql_query("update fafang set ffzhuangtai='待发放' where ffid='$ffid'");
}
//当前时间处于发放日期与归还日期之间
if(strtotime($jintian) >= strtotime($ffriqi) && strtotime($jintian) <= strtotime($guihuanriqi) && $ffzhuangtai != '外借中' && $ffzhuangtai != '维修'){
mysql_query("update fafang set ffzhuangtai='外借中' where ffid='$ffid'");
//更新设备表
$res=mysql_query("select cunfangfangshi from shebei where sbid='$sbid' ");
$cunfangfangshi=mysql_result($res,0,0);
if($cunfangfangshi=="固定"){
$rs=mysql_query("update shebei set sbzhuangtai='不可用' where sbid='$sbid' ");
}
if($cunfangfangshi=="可移动"){
$rs=mysql_query("update shebei set sbzhuangtai='外借' where sbid='$sbid' ");
}
}
//当前日期晚于归还日期,则发放状态为“已归还”
if(strtotime($jintian) > strtotime($guihuanriqi) && $ffzhuangtai != '已归还'){
mysql_query("update fafang set ffzhuangtai='已归还' where ffid='$ffid'");
//var_dump("update fafang set ffzhuangtai='已归还' where ffid='$ffid'");
//更新设备表
$res=mysql_query("select cunfangfangshi from shebei where sbid='$sbid' ");
$cunfangfangshi=mysql_result($res,0,0);
if($cunfangfangshi=="固定"){
$rs=mysql_query("update shebei set sbzhuangtai='可用' where sbid='$sbid' ");
}
if($cunfangfangshi=="可移动"){
$rs=mysql_query("update shebei set sbzhuangtai='在库' where sbid='$sbid' ");
}
}
}
while($row=mysql_fetch_array($res)){
echo "循环次数为第".$times."次";
结果要看对第几条记录进行更新,如果是对第1条记录进行更新,则是循环1次,如果对第3条记录进行更新,则循环3次。也就是说,执行了更新操作,就会退出循环。
怎么会犯这种低级错误呢?
$res=mysql_query("select * from fafang order by ffriqi");
while($row=mysql_fetch_array($res)){第17行
$res=mysql_query("select cunfangfangshi from shebei where sbid='$sbid' ");第31行
$res=mysql_query("select cunfangfangshi from shebei where sbid='$sbid' ");在while循环体内,你修改了作为while条件判断的$res变量,导致循环不对。
修改方法,可以把17,31行的$res变量名修改为其他名字。