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
相关产品推荐
相关产品推荐

