mysql_ *関数の代わりにPHPのPDOを使用することをお勧めします。これらは公式に非推奨であり、PHPのPDOはより安全でオブジェクト指向のアプローチです。
→ PHPのPDOの詳細については、 http ://php.net/manual/en/book.pdo.phpを参照してください。
そうは言っても、INSERTステートメントは、INSERTステートメントが正常に完了したか失敗したかに応じて、TRUEまたはFALSEのみを返します。
→また、mysql_affected_rows()またはmysql_num_rows()は、挿入/更新された行の数のみを返し、探している古いコストは返しません。
したがって、これは2つの部分で行う必要があります。
A)
SELECT `cost`
FROM `details`
WHERE `id` = '$id'
上記のクエリの行が見つかった場合は、IDが重複していることがわかり、cost
返された$costと新しい$costを比較できます。
次に、利用可能な新旧のコストで質問に対する答えが得られ、次のことができます。
B)
INSERT INTO details (id, name, team, cost)
VALUES ('$id', '$name', '$team', '$cost')
ON DUPLICATE KEY UPDATE cost = '$cost'
→使用している変数を必ずサニタイズしてください。mysql_real_escape_string
→または、PHPのPDOを使用して、変数をクエリにバインドするときに変数をサニタイズします。