嗨,我在查询时遇到问题:
$size = isset($_POST['size'])
? "'".mysql_real_escape_string($_POST['size'])."'"
: "NULL";
$color = isset($_POST['color'])
? "'".mysql_real_escape_string($_POST['color'])."'"
: "NULL";
if (is_numeric($_POST['productID']) && is_numeric($_POST['amount']))
{
mysql_query("INSERT INTO usercart VALUES ('', '"
.mysql_real_escape_string($_SESSION['user_ID'])."', '"
.mysql_real_escape_string($_POST['productID'])."', "
.$size." , ".$color." , '".mysql_real_escape_string($_POST['amount'])."')"
." ON DUPLICATE KEY UPDATE amount = amount + '"
.mysql_real_escape_string($_POST['amount'])."'") or die(mysql_error());
}
在我的MySQL表中,我在"product"
,productID
,userID
和size
上有一个名为color
的唯一索引。但是,当我运行此查询时,它只是插入而不是更新金额。阅读MySQL文档我可以而且不必指定索引名称。
现在正在摆弄这几个小时。所以谁知道什么事了?
答案 0 :(得分:0)
看来你有一个代理键“cart_id”,它也是第一个字段的自动增量。您的片段可能会导致DBMS尝试将user_id输入第一个字段,即cart_id。 尝试使用指定的插入,省略cart_id,如:
INSERT INTO usercart(user_id, product_id, ... )
VALUES (user_id, product_id, ...)
;
答案 1 :(得分:0)
NULL始终被视为唯一。因此,如果您将颜色或大小设置为null,那么就您的唯一约束而言,您插入的元组将被视为唯一。