mySQL对重复密钥的多次更新


mySQL on duplicate key multiple update

我试图创建一个简单的SQL INSERT或UPDATE语句,但老实说,我不知道我在做什么

这是我到目前为止的功能

function addInventoryBook($isbn, $sku, $price, $quantity, $condition, $dateOpened){
   $q = "INSERT INTO ".TBL_INVENTORY." VALUES('$isbn', '$sku', $price, 
   $quantity, '$condition', $dateOpened)
   ON DUPLICATE KEY UPDATE VALUES('$isbn', '$sku', $price, $quantity, 
   '$condition', $dateOpened)";     
   return mysql_query($q, $this->connection);           
}

以前更新价格字段的功能似乎正在中工作

function addInventoryBook($isbn, $sku, $price, $quantity, $condition, $dateOpened){
   $q = "INSERT INTO ".TBL_INVENTORY." VALUES('$isbn', '$sku', $price, 
   $quantity, '$condition', $dateOpened)
   ON DUPLICATE KEY UPDATE price = $price";     
   return mysql_query($q, $this->connection);           
}

我会这样写,而不是第二次提供每个值:

ON DUPLICATE KEY UPDATE 
  isbn       = VALUES(isbn)
  sku        = VALUES(sku)
  price      = VALUES(price)
  quantity   = VALUES(quantity)
  condition  = VALUES(condition)
  dateOpened = VALUES(dateOpened)

(如果插入成功,将分配本应插入的值。)

(您可能不想将值分配给构成插入违反的"唯一"键的任何列;我在这里包含了所有列,因为这就是您在尝试中显示的内容。)

Assuimg TBL_INVENTORY是一个具有列值的字符串:

$q = "INSERT INTO ".TBL_INVENTORY." VALUES('$isbn', '$sku', $price,     $quantity, '$condition', $dateOpened) ON DUPLICATE KEY UPDATE isbn='$isbn', sku='$sku', price='$price', quantity='$quantity', condition='$condition', dateOpened='$dateOpened'";

参考链接:http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html