0
사용자 지정 포럼에서 사용자가 어떤 스레드를 보았는지 추적하기 위해 테이블을 설정하려고합니다.MySQL 레코드 교체?
테이블은 매우 간단합니다. thread_id, user_id, thread_view_date.
누군가가 스레드를 볼 때마다 thread_id, user_id 및 뷰 날짜로 테이블을 업데이트하므로 시스템은 스레드를 보았는지 여부를 알 수 있습니다.
내가 가지고있는 문제는 기록을 대체하는 것입니다.
지금은 새 레코드를 추가하는 중입니다. 따라서 사용자가 스레드를 세 번 볼 경우 이전 레코드의보기 시간을 업데이트하는 것처럼 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);
에 사용하고?
감사합니다. 모든
하나에 쿼리를 재 작성. "thread_id, USER_ID '쌍에 고유 키를 추가 할 수 있지만 오류가있다 당신의'ON DUPLICATE KEY' 절은'UPDATE'이고'SET'이 아닙니다. 그리고 추가적인 변수 교체를 피하고 삽입 된 thread_view_date 값을 사용하기 위해, 나는'DUPLICATE KEY UPDATE ON '과 같은 절을 작성했을 것입니다. thread_view_date = VALUES thread_view_date)'. –
몇 가지 테스트를 마친 후이 문제가 유일한 것입니다. 다른 스레드를 볼 경우 이전 레코드 시간을 업데이트합니다. 각 스레드에 대해 새 항목을 작성해야합니다. – Cory
알았어요. 올바르게 쌍을 이루지 못했습니다. UNIQUE KEY thread_id (thread_id, user_id) – Cory