PHP会话数组值

时间:2014-05-17 16:37:58

标签: php mysql arrays session foreach

我真的在努力使用脚本从会话数组中提取值,然后从数据库中的表中调用信息。

我可以在会话中获取要存储的值没有问题,当我打印时它看起来像这样:

数组([0] => 17 [1] => 18 [2] => 19 [3] => 20 [4] => 20 [5] => 19 [6] => 17)

然后我用下面的PHP从数组中提取值并从我的数据库中提取记录,但它似乎在某处破坏了,不幸的是我在PHP中仍然是一个菜鸟。

?php
$action = isset($_GET['action']) ? $_GET['action'] : "";

if($action=='removed'){
    echo "<div> was removed from cart.</div>";
}

if(isset($_SESSION['cart'])){
    $ids = "";
    foreach($_SESSION['cart'] as $id){
        $ids = $ids . $id . ",";
    }

    // remove the last comma
    $ids = rtrim($ids, ',');

    $query = "SELECT * FROM events WHERE EventID IN ({$ids})";
    $stmt = $con->prepare( $query );
    $stmt->execute();

    $num = $stmt->rowCount();

    if($num>0){
        echo "<table border='0'>";//start table

            // our table heading
            echo "<tr>";
                echo "<th class='textAlignLeft'>Product Name</th>";
                echo "<th>Price</th>";
                echo "<th>Action</th>";
            echo "</tr>";

            //also compute for total price
            $totalPrice = 0;

            while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
                extract($row);

                $totalPrice += $EventCost;

                //creating new table row per record
                echo "<tr>";
                    echo "<td>{$EventID}</td>";
                    echo "<td class='textAlignRight'>{$EventCost}</td>";
                    echo "<td class='textAlignCenter'>";
                        echo "<a href='removeFromCart.php?id={$EventID} class='customButton'>";
                            echo "<img src='images/remove-from-cart.png' title='Remove from cart' />";
                        echo "</a>";
                    echo "</td>";
                echo "</tr>";
            }

            echo "<tr>";
                echo "<th class='textAlignCenter'>Total Price</th>";
                echo "<th class='textAlignRight'>{$totalPrice}</th>";
                echo "<th></th>";
            echo "</tr>";

        echo "</table>";
        echo "<br /><div><a href='#' class='customButton'>Checkout</a></div>";
    }else{
        echo "<div>No products found in your cart. :(</div>";
    }

}else{
    echo "<div>No products in cart yet.</div>";
}
?>

我假设它打破了查询,但我仍然是一个非常的菜鸟。

我正在尝试拉出表中的所有字段,但我尝试链接的主键称为“EventID”。数组中的ID确实与我想要提取的记录相匹配。

我已经从另一个教程网站复制了这个代码,这就是为什么我在努力将它与我自己的匹配。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这很简单 你只需要使用序列化来保存数据库中的主题

http://www.php.net/manual/en/function.serialize.php

serialize将使您的数组成为文本,您可以将其保存到数据库中 然后当你想使用它时,调用unserialize它再次更改为数组

http://www.php.net/manual/en/function.unserialize.php