1

単純なSQLINSERT、それ以外の場合は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);           
}
4

2 に答える 2

5

それぞれの値をもう一度指定するのではなく、次のように記述します。

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

(これにより、挿入が成功した場合に挿入されたはずの値が割り当てられます。)

(挿入によって違反された「一意の」キーを構成する列に値を割り当てたくない場合があります。ここにすべての列を含めたのは、それがあなたの試みで示したものだからです。)

于 2012-07-24T18:16:34.683 に答える
2

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

于 2012-07-24T18:14:37.460 に答える