2014-02-11 68 views
0

如果数据库中不存在order_id,我需要MySQL才能INSERT值,以便重复的行不会被插入。如果找到order_id,我需要覆盖现有数据字段。在所有情况下,order_id应该是唯一的。插入到MySQL表中,覆盖重复

达到此目的的最佳方法是什么?

$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

INSERT ..在重复密钥更新? –

+1

你想'替换成' – starshine531

回答

3

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

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

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

+0

有趣的是,我得到错误'这个表不包含一个唯一的列'。在phpmyadmin;不知道如何实现这一点,但我会做一些研究。非常感谢!这看起来有希望。 – Jamus

+0

您需要更改您的表并在order_id列上添加主键/唯一键。 – Srinivas

+0

这是完美的,我只是这样做,它的工作。非常感谢! – Jamus