2016-06-13 13 views
0

次のコードを使用してMySQLテーブルを挿入/更新しましたが、重複レコードが存在する場合は何もしませんでしたON Duplicate Key updateを使用しました。コードが挿入するために素晴らしい作品が、私はので、私はこのON DUPLICATE KEY UPDATE PURCHASE_DESCRIPTION = VALUES ('$pdesc')"を追加したが、それはON重複キーの更新が機能しません

mysqli_query($con, 
    "INSERT INTO table_name 
    (STOCK_NO, PURCHASE_DESCRIPTION, SALES_DESCRIPTION, itemId, itype, ITEM_DESCRIPTION, uOfM, uConvFact, poUOfM, lead, suplId, suplProdCode, minLvl, maxLvl, ordLvl, ordQty, unitWgt, sales, bomRev, makebuy) VALUES 
    ('{$itemid}', '{$pdesc}', '{$sdesc}', '{$itemId}', '{$itype}', '{$itemdsc}', '{$uOfM}', '{$uConvFact}', '{$poUOfM}', '{$lead}', '{$supplId}', '{$suplProdCode}', '{$minLvl}', '{$maxLvl}', '{$ordLvl}', '{$ordQty}', '{$unitWgt}', '{$sales}', '{$bomRev}', '{$makebuy}') 
    ON DUPLICATE KEY UPDATE PURCHASE_DESCRIPTION = VALUES ('$pdesc')" 
); 

// STOCK_NOがプライマリキー

+0

を 'VALUES( '$のpdesc')は' '' VALUES(PURCHASE_DESCRIPTION)ではないでしょうか? –

+0

@JonStirlingしかし、 'PURCHASE_DESCRIPTION'は更新先のテーブルのフィールドです – user6305775

+0

そして?その列にINSERTの値を使用したいとします。 'VALUES()'はランダムな文字列を取らず、カラム名をとります。 [the docs](http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html)を読んでください。 –

答えて

0

あなたのSQLで更新していないにも挿入していない記述は、ソースと異なっている場合は更新したいです間違っています。見てみましょう:別のオプションはUPDATE PURCHASE_DESCRIPTION = VALUES(PURCHASE_DESCRIPTION)

ある

mysqli_query($con, 
"INSERT INTO table_name 
(STOCK_NO, PURCHASE_DESCRIPTION, SALES_DESCRIPTION, itemId, itype, ITEM_DESCRIPTION, uOfM, uConvFact, poUOfM, lead, suplId, suplProdCode, minLvl, maxLvl, ordLvl, ordQty, unitWgt, sales, bomRev, makebuy) VALUES 
('{$itemid}', '{$pdesc}', '{$sdesc}', '{$itemId}', '{$itype}', '{$itemdsc}', '{$uOfM}', '{$uConvFact}', '{$poUOfM}', '{$lead}', '{$supplId}', '{$suplProdCode}', '{$minLvl}', '{$maxLvl}', '{$ordLvl}', '{$ordQty}', '{$unitWgt}', '{$sales}', '{$bomRev}', '{$makebuy}') 
ON DUPLICATE KEY 

-- HERE -- 
UPDATE PURCHASE_DESCRIPTION = '{$pdesc}' 
"); 

あなたはもっとここで読むことができます。http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

関連する問題