0
我正在開發一個自定義論壇,並試圖設置一個表來跟蹤用戶查看了哪些線程。替換MySQL記錄?
表格很簡單。 thread_id,user_id,thread_view_date。
每次有人查看某個線程時,它都會使用thread_id,user_id和查看日期更新表,以便系統知道他們是否查看了線索。
我遇到的麻煩是更換記錄。
截至目前,它只是添加新的記錄。所以如果一個用戶要查看一個線程3次,它會插入3條記錄來更新舊記錄的查看時間。
我目前使用此線程頁
$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);
什麼將更新thread_view_date如果用戶已經觀看線程最簡單的方法,如果沒有創造新紀錄嗎?
謝謝。
+1的查詢,但在錯誤你的'ON DUPLICATE KEY'子句,它是'UPDATE'而不是'SET'。爲了避免額外的變量替換並使用插入的thread_view_date值,我會寫下如下的子句:ON DUPLICATE KEY UPDATE thread_view_date = VALUES( thread_view_date)' – 2010-11-18 18:57:45
我經過一些測試後遇到的唯一問題是如果您查看不同的線程,它會更新舊記錄的時間。需要爲每個線程創建一個新條目。 – Cory 2010-11-18 21:42:41
明白了。它沒有正確配對。 UNIQUE KEY thread_id(thread_id,user_id) – Cory 2010-11-18 22:35:54