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

如何用IF语句实现SQL TRANSFER表收支列的互斥显示(PHP场景)

解决方案

首先修正SQL语句的参数绑定问题(原代码存在参数不匹配的错误,会导致查询失效),再通过PHP条件判断实现收支列的互斥显示:

<tr>
    <th scope="col">AMOUNT CR</th>
    <th scope="col">AMOUNT DB</th> 
</tr> 
<?php 
$cs_id = $_SESSION['cs_id']; 
// 使用占位符避免SQL注入,同时修正参数不匹配问题
$his = $reg_user->runQuery("SELECT * FROM transfer WHERE cs_id = :cs_id ORDER BY id DESC LIMIT 3"); 
$his->execute(array(":cs_id" => $cs_id)); 
while($rows = $his->fetch(PDO::FETCH_ASSOC)) {
    // 判断贷方金额是否为有效数值(可根据实际数据类型调整判断逻辑)
    $hasCredit = !empty($rows['amount_cr']) && $rows['amount_cr'] > 0;
?>
<tr> 
    <td style="color:green;" scope="row">
        <?php echo $hasCredit ? "+ $ " . $rows['amount_cr'] : ""; ?>
    </td>
    <td style="color:red;" scope="row">
        <?php echo !$hasCredit ? "- $" . $rows['amount_db'] : ""; ?>
    </td>
</tr>
<?php } ?>

关键说明:

  • 参数绑定修正:原代码中SQL使用$cs_id变量,但execute传递的是:cs_uname参数,属于参数不匹配,改为绑定:cs_id参数,同时避免SQL注入风险。
  • 互斥显示逻辑:通过判断amount_cr是否为有效数值,决定仅显示贷方列或借方列,另一列留空。如果你的字段允许为0,可调整判断条件为仅检查!empty()。
  • 简化输出:使用三元运算符精简条件判断的代码,让逻辑更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:22:38