【问题标题】:Insert into MySQL table, overwrite on duplicate插入MySQL表,重复覆盖
【发布时间】:2014-02-11 11:01:22
【问题描述】:

如果数据库中不存在order_id,我需要MySQL 只为INSERT 一个值,这样就不会插入重复的行。如果找到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;
} 

【问题讨论】:

  • INSERT .. ON DUPLICATE KEY UPDATE ?
  • 你想要'替换成'

标签: php mysql


【解决方案1】:

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

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

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

【讨论】:

  • 有趣的是,我收到错误“此表不包含唯一列。”在 phpmyadmin 中;不知道如何实现,但我会做一些研究。非常感谢!这看起来很有希望。
  • 你需要改变你的表并在 order_id 列上添加一个主键/唯一键。
  • 这太完美了,我就是这么做的,而且效果很好。非常感谢!
猜你喜欢
  • 2015-01-10
  • 2014-11-27
  • 1970-01-01
  • 2012-02-16
  • 1970-01-01
  • 2021-11-10
  • 2017-01-29
  • 2015-08-10
  • 1970-01-01
相关资源
最近更新 更多