You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP代码逻辑异常:仅需acc=1时修改组却两种情况都执行

问题排查与修正方案

我帮你梳理下代码里的几个关键问题,这就是导致不管acc是0还是1都会执行修改组操作的核心原因:

1. 赋值运算符误用成比较运算符

你在条件判断里用了=(赋值操作)而不是==(松散比较)或者===(严格比较):

if($acc=1){ // 这里是把1赋值给$acc,条件永远返回true
// ...
} elseif($acc=0){ // 同理,这行是赋值操作,永远不会被执行到

这种写法会让第一个if条件永远成立,所以不管数据库里的acc实际值是多少,每次都会触发修改组的逻辑。

2. 结果集获取方式错误且未赋值

你调用了mysql_fetch_row($rs)但没有把结果保存到$row变量里,而且mysql_fetch_row返回的是索引数组,不能用关联键名$row['acc']来取值,应该用mysql_fetch_assoc来获取关联数组:

$rs=mysql_query($req) or die(mysql_error());
// 原代码只是判断有没有结果,但没保存结果到变量
$row = mysql_fetch_assoc($rs); // 正确获取关联数组结果
if ($row) { // 判断是否成功取到数据
    $acc = $row['acc'];
    // 改用比较运算符判断acc值
    if($acc == 1){
        // 修改组的逻辑
    } elseif($acc == 0){
        // 拒绝消息的逻辑
    }
}

3. 额外语法问题:acc=0时的UPDATE语句

你在$req2里的WHERE条件关联了demch表,但UPDATE语句里没有引入这个表,会导致SQL语法错误,需要改成JOIN关联的写法:

$req2="UPDATE etudiant 
       JOIN demch ON etudiant.dem_id=demch.dem_id 
       SET etudiant.message='votre demande est refusée'";

修正后的完整代码片段

<?php 
include('conn.php'); 
if(isset($_GET['Valider'])) { 
    $req="select acc from demch "; 
    $rs=mysql_query($req) or die(mysql_error()); 
    $row = mysql_fetch_assoc($rs); // 获取关联数组结果
    if ($row) { 
        $acc = $row['acc'];
        if($acc == 1){ // 用比较运算符判断acc值
            $req1= "UPDATE etudiant 
                    JOIN demch ON etudiant.dem_id=demch.dem_id 
                    SET etudiant.groupe=demch.grpdes"; 
            $rs1=mysql_query($req1) or die (mysql_error()); 
        } elseif($acc == 0){ // 用比较运算符判断acc值
            $req2="UPDATE etudiant 
                   JOIN demch ON etudiant.dem_id=demch.dem_id 
                   SET etudiant.message='votre demande est refusée'";
            $rs2=mysql_query($req2) or die (mysql_error());
        }
    }
}
?>

额外建议

  • mysql_*系列函数已经被PHP官方废弃多年,安全性和兼容性都很差,建议尽快换成mysqli_*或者PDO来操作数据库。
  • 如果demch表有多条记录,当前查询只会处理第一条数据,你可能需要添加条件来指定具体的dem_id,比如select acc from demch where dem_id = ?(用预处理语句可以避免SQL注入风险)。

内容的提问来源于stack exchange,提问作者avery

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:58:33