如果数据库中不存在INSERT
,我只需要order_id
一个值,因此不会插入重复的行。如果找到order_id
,我需要覆盖现有的数据字段。 order_id
在所有情况下都应该是唯一的。
实现这一目标的最佳方式是什么?
$statement = $db->prepare("INSERT INTO carts VALUES(:order_id, :items, :shipping, :price)");
$params = array(
':order_id' => $_SESSION['order_id'],
':items' => Array(),
':shipping' => '0',
':price' => '0'
);
if($statement->execute($params)) {
return true;
}
else
{
return false;
}
答案 0 :(得分:3)
首先确保您的表格有order_id
作为主要/唯一键。
如果您希望覆盖现有字段,则查询应如下所示。
INSERT INTO carts VALUES(:order_id, :items, :shipping, :price) ON DUPLICATE KEY UPDATE items = values(items), shipping = values(shipping);
上述查询只会覆盖其他列的值。