【问题标题】:PDO Insert Session Values to Database [closed]PDO 将会话值插入数据库 [关闭]
【发布时间】:2013-11-28 00:17:22
【问题描述】:

我正在开发基于会话的购物车。我想将会话中的购物车项目保存到我的数据库中。请我需要关于如何去做的帮助。我已经阅读过,但没有找到任何解决我问题的线索。下面是两张图片,一张是示例 DB 表,另一张是假设的 Session 变量。

使用 PDO,我需要有关如何将这些值插入我的数据库的帮助。请注意,返回数组的数量可能会超过样本图像上的数组计数。任何提供的解决方案都应具有可扩展性,以尽可能多地保存购物车商品。

【问题讨论】:

    标签: php mysql session pdo


    【解决方案1】:

    与通过 PDO 进行的其他 SQL 查询相比,为此使用 PDO 并没有什么特别之处。但是,您的会话数组中确实缺少 prod_id 值,因此您可能还想添加它。

    $statement = $pdo->prepare("
        INSERT INTO
            cart
            (prod_id, code, name, qty, price, colour, size, quantity)
        VALUES
        (:prod_id, :code, :name, :qty, :price, :colour, :size, :quantity)
    ");
    
    foreach ($_SESSION['cart'] as $item)
    {
        $statement->execute(array(
            ':prod_id' => $item['prod_id'],
            ':code' => $item['code'],
            ... etc ...
        ));
    }
    

    如果需要(如果它是由 SQL 服务器生成的),您还可以通过调用 $pdo->lastInsertId(); 来检索 cart_id; .. 我猜它已经指的是购物车,所以你也需要有它。

    【讨论】:

    • 感谢您的指导。我尝试实现代码并登陆PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined'。 :bind 数字是正确的并且也返回它们不同的值。什么可能导致此错误?
    • 这个问题可能是由于从 INSERT 语句中打开的游标引起的,尝试添加 $statement->closeCursor() 或将 $statement 的创建移到 foreach 循环中。
    • 它仍然会抛出执行上述两个建议的错误。是什么促使了这种情况?需要更多帮助。
    • 在我离开它几个小时后返回以找出我的代码并且一切正常。您的解决方案也已被接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 2013-03-09
    • 2017-05-08
    相关资源
    最近更新 更多