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

PHP在span标签内写if语句输出int类型价格字段不显示如何解决

问题说明

在网站中调用int类型的价格字段搭配图标展示时,将if判断逻辑写入span标签内部后,字段内容无法正常显示;即便使用strval()做类型转换,内容仍然无法正常输出。预期效果为读取数据库中的价格字段,将int类型值转为字符串后正常展示。

相关代码

价格图标展示代码

<a href="#"><i class=" fas fa-money-check-alt"></i>
     <span>
     (Rp.<?php if($count_balance->rowCount()>0) $count_balance->fetch(PDO::FETCH_ASSOC); ?>)
     </span>
</a>

数据查询逻辑

$count_balance = $conn->prepare("SELECT * FROM `balance` WHERE user_id = ?");
$count_balance->execute([$user_id]);
问题根因

和int转字符串逻辑无关,核心错误共2处:

  • $count_balance->fetch(PDO::FETCH_ASSOC)的作用是从结果集中取出一行数据、返回关联数组,这行代码执行后没有任何输出到页面的动作,取到的结果直接被丢弃,页面自然不会显示内容。
  • fetch返回的是整行数据的数组结构,代码中没有指定要读取的价格对应字段名,就算直接输出fetch的返回值,也会触发数组打印错误,无法正常显示金额。
修复方案
  • 先把fetch取到的整行数据存入变量,不要直接在if分支里只调用fetch不存结果
  • 从结果数组中取出对应价格字段的值(注意把代码里的amount替换成你balance表中实际存储金额的字段名),用echo输出即可,int类型的值在echo时会自动转为字符串,不需要额外调用strval()
  • 可以补充无数据时的默认展示值,避免页面出现空括号

修复后的参考代码:

<a href="#">
    <i class="fas fa-money-check-alt"></i>
    <span>
        (Rp.<?php 
        if($count_balance->rowCount() > 0) {
            $balanceRow = $count_balance->fetch(PDO::FETCH_ASSOC);
            // 替换amount为你的实际金额字段名
            echo $balanceRow['amount'];
        } else {
            echo '0';
        }
        ?>)
    </span>
</a>

提示:如果后续逻辑还要用到这次查询的余额数据,建议提前把fetch结果存到全局变量复用,避免重复调用fetch导致指针移动后拿不到数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:42:14