PHP SQL更新多个类别的产品

时间:2012-11-24 18:21:21

标签: php sql sql-update

我想在php中添加多个类别的产品。经过大量的搜索/研究后,我能够在多个类别中添加产品,但在更新页面上更新/更改产品类别时,它无法正常工作。

我的DB结构如下:

PRODUCTTABLE
 _____________________________________________
|    pid    |      pname   | price | pdetails |
-----------+---------------+-------+----------+

CATEGORYTABLE
 ______________________________________
|    id    |      catname   | catslug |
-----------+---------------+----------+

PRODUCT2CAT
 ____________________________
|  product_id   |   cat_id  |
-----------+----------------+

ADD PRODUCT页面上使用的代码:(仅限于提问)

<form method="post">
...........
echo "<input type=\"checkbox\" name=\"pcateg[]\" value=\"$catid\" /> $catnm<br />";
...........

if(isset($_POST["submit"])) {
.........
.............
$pc2=$_POST["pcateg"];

$query1 = "insert into producttable(pname,price,image,pdetails) values('$pn','$p','$img','$pd')";
mysql_query($query1);
$prdid = mysql_insert_id();



foreach($pc2 as $key=>$values)
{
$query2 = "INSERT INTO product2cat(product_id,cat_id) VALUES('$prdid','$values') ";
$result2 = mysql_query($query2);
}

}

当我添加产品时,代码运行良好并在PRODUCT2CAT表中插入所选类别ID。

UPDATE PRODUCT页面上使用的代码是:

<form method="post">
...........
    while($ans=mysql_fetch_array($cresult))
    {
        $selected = "";
        $catId = $ans['id'];
        $catNm = $ans['catname'];

        if ($catId == $categ) {
        $selected = "checked";
        }

    echo "<input type=\"checkbox\" name=\"pcateg[]\" value=\"$catId\" $selected /> $catNm<br />";
    }
........
    if(isset($_POST["submit"])) {
    .........
    .............
    $query1="UPDATE producttable SET pname='$pn', price='$p', image='$img', pdetails='$pd' WHERE pid=$prid";
    mysql_query($query1);

    foreach($pc2 as $key=>$values)
    {
    $query2 = "UPDATE product2cat SET cat_id='$values' WHERE product_id=$prid";
    $result2 = mysql_query($query2);
    }
  }

更新$ query2无效。
或者我必须先使用2个查询来删除旧记录,然后插入新记录。如何在这种情况下使用查询以便在产品更新上更新/更新所选类别。

我还想在更新页面上将旧类别显示为预先选中的复选框。 $ selected =“checked”它适用于单一类别但如何在多重检查中执行此操作。

1 个答案:

答案 0 :(得分:1)

  1. 不要使用mysql_ *它已被弃用
  2. INSERT INTO table_name ('col1', 'col2') VALUES (1, 2), (2, 3), (3, 4) 会插入3行
  3. 这样的事可能有用:

    $queryu = "INSERT INTO product2cat(product_id,cat_id) VALUES ";
    $insertValues = array();
    foreach($pc2 as $key=>$values) {
        $insertValues[]= "('$prid','$values')"; 
    } 
    
    $queryu .= implode(',', $insertValues);