PHP MySQL:遇到非数字值

时间:2018-04-22 02:40:30

标签: javascript php html mysql sql

我一直收到此错误,即使我查看购物车时它列出了商品和价格,然后计算总价并以正确的价值返回。我不确定错误是什么,因为它会正确列出产品标题及其价格。我知道理解为什么它是一个非数字值,因为价格被列出并且总价格相应地加起来。

<!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>

1 个答案:

答案 0 :(得分:1)

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

$total = 0;

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

$total = (int)$total + 5;

要验证我的答案,在进行上述修改之前,请在实例化总计后添加以下行。

var_dump($total)

这将给出参数的类型和值。虽然PHP是一种松散类型的语言,但我会非常小心地隐式地将变量从非数字转换为数字(反之亦然)。如果字符串表示的int值大于PHP_INT_MAX,则在将字符串转换为int时会出现一个这样的问题。在代码中代表钱是我强烈建议你研究的另一个话题。