插入MySQL表,重复覆盖

时间:2014-02-11 11:01:23

标签: php mysql

如果数据库中不存在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;
} 

1 个答案:

答案 0 :(得分:3)

首先确保您的表格有order_id作为主要/唯一键。 如果您希望覆盖现有字段,则查询应如下所示。

INSERT INTO carts VALUES(:order_id, :items, :shipping, :price) ON DUPLICATE KEY UPDATE items = values(items), shipping = values(shipping);

上述查询只会覆盖其他列的值。