Php 将多个产品添加到一个购物车中

Php 将多个产品添加到一个购物车中,php,mysql,sql,Php,Mysql,Sql,嘿,我正在尝试将不同产品页面的产品添加到一个购物车中,例如,如果我从华硕页面选择了一个产品,从宏碁页面选择了另一个产品,它将在一个购物车中同时显示这两个产品,但现在我得到一个错误,即 从asus中选择名称,其中serial=1 字段列表中的“名称”列不明确 我为每种产品创建了不同的表 创建表asus ( 串行int(11), 名称varchar(20), 价格浮动(), 图片varchar(80) ); CREATE TABLE acer ( 串行int(11), 名称varchar(20),

嘿,我正在尝试将不同产品页面的产品添加到一个购物车中,例如,如果我从华硕页面选择了一个产品,从宏碁页面选择了另一个产品,它将在一个购物车中同时显示这两个产品,但现在我得到一个错误,即

从asus中选择名称,其中serial=1

字段列表中的“名称”列不明确

我为每种产品创建了不同的表

创建表asus
(
串行int(11),
名称varchar(20),
价格浮动(),
图片varchar(80)
);

CREATE TABLE acer
(
串行int(11),
名称varchar(20),
价格浮动(),
图片varchar(80)
);

创建表
(
串行int(11),
名称varchar(20),
价格浮动(),
图片varchar(80)
);

这是获取名称和价格的函数:

function get_product_name($pid){
    $result=mysql_query("select name from asus,acer,lenovo
    where serial=$pid") or die("select name from products where serial=$pid"."<br/><br/>".mysql_error());
    $row=mysql_fetch_array($result);
    return $row['name'];
}




 function get_price($pid){
    $result=mysql_query("select price from  asus,acer,lenovo where serial=$pid") or die("select name from products where serial=$pid"."<br/><br/>".mysql_error());
    $row=mysql_fetch_array($result);
    return $row['price'];
}
函数获取产品名称($pid){
$result=mysql\u query(“从华硕、宏碁、联想选择名称
其中serial=$pid”)或die(“从serial=$pid的产品中选择名称”。

。mysql_error(); $row=mysql\u fetch\u数组($result); 返回$row['name']; } 函数获取价格($pid){ $result=mysql_query(“从华硕、宏碁、联想选择价格,其中serial=$pid”)或die(“从产品中选择名称,其中serial=$pid”。

。mysql_error(); $row=mysql\u fetch\u数组($result); 返回$row[‘价格’]; }
这是addtocart、product exist和get total的函数:

function get_order_total(){
    $max=count($_SESSION['cart']);
    $sum=0;
    for($i=0;$i<$max;$i++){
        $pid=$_SESSION['cart'][$i]['productid'];
        $q=$_SESSION['cart'][$i]['qty'];
        $price=get_price($pid);
        $sum+=$price*$q;
    }
    return $sum;
}

function addtocart($pid,$q){
    if($pid<1 or $q<1) return;

    if(is_array($_SESSION['cart'])){
        if(product_exists($pid)) return;
        $max=count($_SESSION['cart']);
        $_SESSION['cart'][$max]['productid']=$pid;
        $_SESSION['cart'][$max]['qty']=$q;
    }
    else{
        $_SESSION['cart']=array();
        $_SESSION['cart'][0]['productid']=$pid;
        $_SESSION['cart'][0]['qty']=$q;
    }
}




function product_exists($pid){
    $pid=intval($pid);
    $max=count($_SESSION['cart']);
    $flag=0;
    for($i=0;$i<$max;$i++){
        if($pid==$_SESSION['cart'][$i]['productid']){
            $flag=1;
            break;
        }
    }
    return $flag;
}
函数get\u order\u total(){ $max=计数($_会话['cart']); $sum=0; 对于($i=0;$i请参见此处的答案:

我建议将所有三个表合并到一个组合产品表中,并用一个标志表示它是什么类型的产品

如果没有,则需要使用表别名

function get_product_name($pid){
    $result=mysql_query("select isnull(isnull(a.name, c.name), l.name) as name from asus a,acer c,lenovo l
    where(a.serial=$pid OR c.serial=$pid OR l.serial=$pid) ") or die("select name from products where serial=$pid"."<br/><br/>".mysql_error());
    $row=mysql_fetch_array($result);
    return $row['name'];
}
函数获取产品名称($pid){
$result=mysql\u query(“选择isnull(isnull(a.name,c.name),l.name)作为来自华硕a、宏碁c、联想l的名称
其中(a.serial=$pid或c.serial=$pid或l.serial=$pid)”)或die(“从serial=$pid的产品中选择名称”。

.mysql_error(); $row=mysql\u fetch\u数组($result); 返回$row['name']; }
您不使用带有
序列号
名称
价格
图片
品牌
的表有什么原因吗?答案不是,但仅供参考,最好不要使用保留关键字,如“名称”在列或表名中。它会导致各种问题。仔细想想,这可能就是答案。请尝试“从asus中选择[name],其中serial=1”看看这是否解决了问题。不,我真的没有考虑过……但是如果我要使用brand,我将如何称呼它上面的评论,该语法是针对sql server的。对于MySql,请看这一点-从选择查询中转义保留字…:谢谢divan,但它给出了这个错误,选择产品的名称,其中serial=1的参数不正确调用本机函数“isnull”时的r计数
<?php
        if(is_array($_SESSION['cart'])){
        $max=count($_SESSION['cart']);
            for($i=0;$i<$max;$i++){
                $pid=$_SESSION['cart'][$i]['productid'];
                $q=$_SESSION['cart'][$i]['qty'];
                $pname=get_product_name($pid);
                $price=get_price($pid);

                if($q==0) continue;
        ?>
                <tr bgcolor="#FFFFFF"><td><?php echo $i+1?></td><td>
                <?php echo $pname?>

                </td>
                <td>RM 
                <?php echo $price?> 
function get_product_name($pid){
    $result=mysql_query("select isnull(isnull(a.name, c.name), l.name) as name from asus a,acer c,lenovo l
    where(a.serial=$pid OR c.serial=$pid OR l.serial=$pid) ") or die("select name from products where serial=$pid"."<br/><br/>".mysql_error());
    $row=mysql_fetch_array($result);
    return $row['name'];
}