使用购物车上的会话无法保存多行数据

时间:2014-04-05 01:53:21

标签: php session shopping-cart

我坚持这一点,我觉得我很接近,但这个想法不会出现!我搜索了很多,但我无法找到适合我具体情况的解决方案。

我正在使用mysql在php中制作购物车。这是一个简单的,你登录,然后去商店,点击按钮'添加到购物车'并且物品出现在价格及其下方的gridview上,您可以看到购买的总数。 当我需要将多行数据(saleid,用户名,itemid等)从当前会话保存到数据库时,我遇到了问题,我只是不知道为什么我无法解决这个问题。 out,因为它(有点)与用户在页面中注册时的方法相同。

我正在考虑制作一个 for loop ,它将eache SESSION行的内容保存到数据库中,就像这些一样(它只是一个例子,我是...这可能是不正确的)

if (mysql_num_rows($result)!=0){
while ($_SESSION = mysql_fetch_array($result)){
    $array[]= $_SESSION;

    for($i=,$i<$array_rows;$i++){
    mysql_query ("INSERT INTO purchase(username,gameid,amount_purchased) VALUES
    ('".$array[$i]."', '".$array[$i]."', '".$array[$i].")");
    $array[$i]=$i+1;
    }
}

}

用户名,gameid,purchaseamount只是一些例子!我真的很抱歉这是一个愚蠢的问题,但我发现.php真的很难理解:/

2 个答案:

答案 0 :(得分:0)

如果您希望在请求之间保留$_SESSION的价值,那么您就不应该像这样贬低它的价值。

while ($_SESSION = something) { ... 

在这里查看您在使用$_SESSION做了什么?

$_SESSION就像任何其他变量一样,如果你覆盖它,你就会删除它的原始值。

另外,for($i=,$i<$array_rows;$i++)

这甚至可以编译吗?请改为尝试:for($i=0;$i<$array_rows;$i++)

答案 1 :(得分:0)

如果您将购物车的值存储在会话变量中,可以说$ _SESSION ['cart']将会话购物车中的数据保存到您通常会执行的操作中

    $data = $_SESSION['cart'];

if(empty($data)) return false;

$table = 'purchase';
$implode_values  = array();
$implode_fields = array();

foreach($data as $key => $value) {
    $implode_fields[] = (string)$key;
    $implode_values[] = Your_db_escape_method($value);  
}

if( mysql_query ("INSERT INTO " . $table . " (".implode(", ", $implode_fields).") VALUES (".implode(", ",$implode_values).")")) {
    //echo 'Data was inserted';
} else {
    //echo 'Data was not inserted';
}

或根据您的示例单个查询

        foreach($data as $value) {

    mysql_query (
    "INSERT INTO 
        purchase(
        username,
        gameid,
        amount_purchased

    ) VALUES (
        '".$value['username']."', 
        '".$value['gameid']."',
        '".$value['amount_purchased']."')"
     );
}   

设置对象的值并像这样存储它们;

$_SESSION['cart'] = array (
   'username' => 'Usertest_1', // eg 'username' => $obj->username,
   'gameid' => 1234,
   'amount_purchased' => 200
);

以上与;相同;

$_SESSION['cart']['username'] = 'Usertest_1';
$_SESSION['cart']['gameid'] = 1234;
$_SESSION['cart']['amount_purchased'] = 200;

//用于多条记录;

$_SESSION['cart'][] = array (
  'username' => 'Username1',
  'gameid' => 1234,
  'amount_purchased' => 200
);

$_SESSION['cart'][] = array (
  'username' => 'username2',
  'gameid' => 1234,
  'amount_purchased' => 200
);

保存示例

$data = $_SESSION['cart'];
$result = mysql_query ("INSERT INTO purchase(username, gameid, amount_purchased) VALUES ('".$data['username']."','".$data['gameid']."','".$data['amount_purchased']."')");
  if($result && mysql_num_rows($result)>0) {
// all ok
 }