0

我正在尝试做一些对 MySQL 来说可能太复杂的事情

如果存在一行,我希望它更新一个计数器,如果不插入该行...我进行了搜索并找到了这个...

$query = "insert into TABLE 
(`id`, `item`, `count`, `option1`, `option2`) 
values 
('$cartName', '$sku', 1, '$option1', '$option2')
on duplicate key 
update count = count + 1";

但我在表中没有键,因此“重复键”不起作用,查询需要多个 AND 来根据 id、item 和 2 个选项值检查行。

一个附加的事情是让 mySQL 根据项目返回所有计数值的计数

这是我目前拥有的(从搜索修改:),有谁知道如何将其减少为单个查询?

option1 和 option2 是可变的,可以为 null,这就是为什么 2 个 if 语句从 AJAX 调用的原因,因此 $message 用于更新 javascript 客户端。

$query = "update TABLENAME set count=count+1 where item='$item'";
if($option1) $query .= " AND option1='$option1'";
if($option2) $query .= " AND option2='$option2'";
$result = mysql_query($query) or die("Error:".mysql_error() );       

if (mysql_affected_rows()==0) {
    $query = "insert into $table11 (`id`, `item`, `count`, `option1`, `option2`) values ('$id', '$item', 1, '$option1', '$option2');";
    $result = mysql_query($query) or die("Error:".mysql_error() );
    }

//total count for all items with specific id
$query = "SELECT SUM(count) FROM TABLENAME WHERE id='$cartName'";
$result = mysql_fetch_row(mysql_query($query)) or die("Error:".mysql_error() );
$message = $result[0];
4

0 回答 0