mySQL上的重复密钥多次更新

mk_*_*_89 1 php mysql sql

我试图创建一个简单的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);           
}
Run Code Online (Sandbox Code Playgroud)

似乎更新价格字段的上一个功能正在运行

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);           
}
Run Code Online (Sandbox Code Playgroud)

spe*_*593 5

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

ON DUPLICATE KEY UPDATE 
  isbn       = VALUES(isbn)
  sku        = VALUES(sku)
  price      = VALUES(price)
  quantity   = VALUES(quantity)
  condition  = VALUES(condition)
  dateOpened = VALUES(dateOpened)
Run Code Online (Sandbox Code Playgroud)

(如果插入成功,那将分配已插入的值.)

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