php-mysql:遇到非数字值

pkwftd7m  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(312)

我不断得到这个错误,即使当我查看我的购物车,它列出了项目和价格,然后总价格计算和返回正确的价值。我不知道是什么错误,因为它列出了所有正确的产品名称和它的价格。我知道为什么说它是一个非数字值,因为价格是列出来的,总价是正确加起来的。

<!DOCTYPE html>
<html>
<head>
    <title>Cart</title>
</head>
<body>
    <?php 
    session_start();
    require_once('connect.php'); 
    include('cartHead.php'); 
    include('cartNav.php');
    ?>

    <div class="container">
        <?php 
        $items = $_SESSION['cart'];
        $cartitems = explode(",", $items);
        ?>
        <div class="row">
            <table class="table">
                <tr>
                    <th>Item</th>
                    <th>Item Name</th>
                    <th>Price</th>
                </tr>
                <?php
                $total = '';
                $i=1;
                foreach ($cartitems as $key=>$id) {
                    $sql = "SELECT * FROM products WHERE id = $id";
                    $res=mysqli_query($connect, $sql);
                    $r = mysqli_fetch_assoc($res);
                    ?>      
                    <tr>
                        <td><?php echo $i; ?></td>
                        <td><a href="delCart.php?remove=<?php echo $key; ? 
                        >">Remove</a> <?php echo $r['title']; ?></td>
                        <td>$<?php echo $r['price']; ?></td>
                    </tr>
                    <?php 
                    $total = $total + $r['price'];
                    $i++; 
                } 
                ?>
                <tr>
                    <td><strong>Total Price</strong></td>
                    <td><strong>$<?php echo $total; ?></strong></td>
                    <td><a href="#" class="btn btn-info">Checkout</a></td>
                </tr>
            </table>

        </div>

    </div>

    <?php include('cartFooter.php'); ?>

</body>
</html>
3yhwsihp

3yhwsihp1#

您正在将total初始化为字符串,但您的操作将其视为数字。您可以按如下方式初始化总计:

$total = 0;

或者您可以将total转换为int(或您选择的任何类型)

$total = (int)$total + 5;

为了验证我的答案,在进行上述修改之前,在示例化total之后添加以下行。

var_dump($total)

这将给出参数的类型和值。虽然php是一种松散类型的语言,但我会非常小心地将变量从非数字隐式转换为数字(反之亦然)。其中一个问题是,如果字符串所表示的int值大于php\u int\u max,那么在将字符串转换为int时可能会出现感知损失。在代码中表示货币是我强烈建议您研究的另一个主题。

相关问题