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

MySQL数组获取异常:WHILE循环生成标签tab_id全为1问题排查

问题分析与修复方案

你遇到的这个问题是PHP开发里非常典型的小疏漏——把赋值运算符 = 和比较运算符搞混了!

看你代码里的关键判断行:

if ($rows['tab_id'] = 1)

这里的 = 是赋值操作,它会直接把数值1塞给 $rows['tab_id'],然后这个赋值表达式的结果就是1(非布尔值在条件判断里会被当作true),所以每次循环都会进入这个分支,而且所有行的tab_id都被强制改成了1,自然显示全是1。

修复方法

把赋值运算符改成比较运算符就行,推荐用严格相等的 ===(同时检查值和数据类型,避免类型转换带来的意外),或者用普通相等的 ==:

<?php while($rows = mysqli_fetch_array($result)){ 
    // 用 === 做严格比较,更严谨
    if ($rows['tab_id'] === 1) { ?> 
        <li class="active"><a href="#tab<?= $rows['tab_id']; ?>" role="tab" data-toggle="tab" ><?= $rows['tab_title']; ?></a></li>
    <?php } else { ?>
        <li><a href="#tab<?= $rows['tab_id']; ?>" role="tab" data-toggle="tab" ><?= $rows['tab_title']; ?></a></li>
    <?php }
} ?>

额外小建议

  • PHP里的短标签 <?= $变量 ?> 可以代替 <? echo $变量; ?>,写起来更简洁,现在大部分环境都支持这个语法。
  • 以后写条件判断时多留意运算符,这种赋值代替比较的错误很容易犯,但排查起来又容易忽略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:27:43