【发布时间】:2009-12-06 10:24:58
【问题描述】:
当用户购买产品(假设他们有 3 个产品)并且输入了他们的信息时,该产品会自动进入数据库,状态 = 0。
如果用户离开购物篮,让我们假设产品概览(并购买额外的产品,现在他们有 4 个产品在购物篮中)。
我必须弄清楚如何将新产品添加到数据库中,而不是插入所有产品+新产品,因为已经插入了 3 个产品。
$_SESSION['inserted_ids'] = array();
$id = '';
if( in_array( $id, $_SESSION['inserted_ids']) ){
return;
}else{
$id = $db->Insert("INSERT INTO orders SET
name = '". $_SESSION['information']['name'] ."',
address = '". $_SESSION['information']['address'] ."',
date = '". Database::Now() ."',
phone = '". (isset($_SESSION['information']['phone']) ? $_SESSION['information']['phone']:'') ."',
email = '". $_SESSION['information']['email'] ."',
city = '". $_SESSION['information']['city'] ."',
zipcode = '". $_SESSION['information']['zipcode']."'
");
$_SESSION['inserted_ids'][] = (int) $id;
# lists products
$list = '';
$grand_total = '';
$res = $db->Execute("sql with product_id");
while($row = $res->GetNext()){
if( $row['product_id'] == $_SESSION['inserted_ids'] ){
$db->Execute("INSERT INTO order_lines SET
price = '$round_price',
order_id = $id,
product_id = $product_id,
product_name = '$product_name',
units = '$grand_units',
status = '0',
date = '".Database::Now()."',
item_num = '".$item_num."';
ON DUPLICATE KEY UPDATE SET
units = '$grand_units'
WHERE order_id = $id
LIMIT 1;
");
}
}
}
【问题讨论】:
-
您是否给我们提供了错误的代码示例?因为我看不到将产品插入数据库的部分。再输入用户信息就没有意义了。
-
嗯.. 在会话变量中设置插入的标志可能是一种廉价但可行的解决方案。