0
私はカスタムフォーラムで作業しており、どのスレッドをどのユーザーが見たのかを把握するためにテーブルを設定しようとしています。MySQLレコードを置き換える?
テーブルは非常にシンプルです。 thread_id、user_id、thread_view_date。
誰かがスレッドを表示するたびに、thread_id、user_id、およびビューの日付でテーブルを更新し、システムがスレッドを見たかどうかを知るようにします。
私が抱えている問題は、レコードを置き換えることです。
今のところ、新しいレコードを追加するだけです。したがって、ユーザーがスレッドを3回見た場合、古いレコードの表示時間を更新するために3つのレコードが挿入されます。
私は現在、新しいレコードを作成しない場合は、ユーザーが既にスレッドを見た場合thread_view_dateを更新する最も簡単な方法であること、そして何でしょうスレッドページ
$viewed_sql = "
REPLACE INTO forum_thread_views (
thread_id,
user_id,
thread_view_date
) VALUES (
'$thread_id',
'$_SESSION[user_id]',
'$date'
)
";
$viewed_query = @mysqli_query ($db_connect, $viewed_sql);
でこれを使用していますか?
ありがとうございました。
1にクエリを書き換えますが、中にエラーがありますあなたの 'ON DUPLICATE KEY'節は、' UPDATE'であり、 'SET'ではなく、追加の変数置換を避け、挿入されたthread_view_dateの値を使用するために、この' ON DUPLICATE KEY UPDATE thread_view_date = VALUES thread_view_date) '。 –
いくつかのテストの後に私がこれを持っている唯一の問題は別のスレッドを表示すると古いレコードの時刻を更新します。スレッドごとに新しいエントリを作成する必要があります。 – Cory
入手しました。正しくペア設定されていませんでした。 ユニークキーthread_id(thread_id、user_id) – Cory