需要计划好如果查询出错的处理办法,你是直接终止程序呢?还是重新运行查询语句,抑或继续执行,就当什么也没有发生?仔细考虑每种选择的结果。例如,如果不能得到下一个顾客的customer_id ,那么,建立新顾客的记录也就泡汤,接下来就是不能更新她的地址,不能往购物车里添加物品,对吧?
现在,我们看看添加物品的过程,这个步骤相对比较容易,在添加物品之前,要先检查物品是否在数据库中。这样比较安全,因为物品号码来自浏览器,可能被篡改。一旦知道物品存在,我们就能测试它是否已经在购物车里,如果已经放入,那么数量加一,而不是另外插入一行,否则,插入一条数量为一的记录到购物车。
表四、添加物品到购物车
<?php
function cart_add_item($item_id,$quantity=1) {
global $customer_id, $feedback, $conn;
$res=query("select * from item_inventory where part_number='$item_id'");
if (!$res || pg_numrows($res)<1) {
$feedback .= pg_errormessage($conn);
$feedback .= ' error-item not found ';
return false;
} else {
// 检查物品是否放入购物车,如果是,增加数量
// 开始事务
query("begin work");
$res=query("select * from cart_items ".
"where part_number='$item_id' and customer_id='$customer_id' for update");
if (!$res || pg_numrows($res)<1) {
//如果没有该物品,新插入一条
$res=query("insert into cart_items ".
"(customer_id,part_number,quantity)".
"values ($customer_id,$item_id,$quantity)");
if (!$res || pg_cmdtuples($res) &
| 对此文章发表了评论 |
