2012-01-10 2 views
0

일부 게시물을 저장 한 적이 있으며 제한된 시간 (예 : 1 시간 정도) 후에이 게시물을 삭제하고 싶습니다.제한된 시간 후에 MySql 테이블에서 삭제

사물에 가입해야하는 사이트가 있습니다. 등록하기 전에 사이트에서 보낸 링크를 클릭하여 이메일을 확인해야합니다. 그리고 그 링크는이 임시 테이블에 저장됩니다.

제한된 시간이 지나면 게시물 (링크 포함)이 삭제되기를 원합니다.

여러 옵션이

$createCommentsTable = "CREATE TABLE comments(
id INT NOT NULL AUTO_INCREMENT, 
inlagg_id INT, 
namn VARCHAR(30), 
kommentar VARCHAR(200), 
date VARCHAR(40), 
PRIMARY KEY (id) 
)"; 
+0

무엇 특히, 문제는 여기에있다? –

+0

지정된 시간 후에 테이블에서 게시물을 삭제하십시오. –

+0

X 분이 지난 후에 항목을 자동 삭제하려고합니다. – egrunin

답변

0

테이블은, 가장 쉬운 오래된 기록을 제거합니다 삽입 트리거를 추가하는 것입니다.

delimiter | 

CREATE TRIGGER comments_bi BEFORE INSERT ON comments 

FOR EACH ROW BEGIN 
    DELETE FROM comments WHERE `date` < DATE_SUB(CURRENT_TIMESTAMP, '-1 hour'); 
END; 

| 

delimiter ; 

그러나 최선의 선택 (같은 memcache

+0

이 코드를 어디에 넣어야합니까? 'testref'와'test1'은 무엇입니까 –

+0

데이터베이스에서 이것을 실행할 수 있습니다. 나는 응답을 편집했다, 그들은 mysql 문서의 예제에서였다. – amccausl

+0

아직도 코드를 작성해야하는 부분이 있습니까? 나는 "; END 전에 의견 '날짜'

-1

http://dev.mysql.com/doc/refman/5.1/en/create-event.html로 살펴 보자. 당신은

CREATE EVENT myevent 
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR 
DO 
    DELETE FROM comments WHERE id = [comment id]; 
과 같은 성명을 발표하려고 할 수 캐싱 드라이버에서 임시 데이터의 종류를 저장하는 것입니다
+0

이 코드는 테이블을 만들 때 같은 페이지에 표시됩니까? –

+0

새 레코드를 삽입 한 직후에이 문을 실행하려고 생각했습니다. ([주석 ID] 대신 새로 삽입 된 ID를 넣어야합니다.) – a1ex07

+0

또한 문서를 확인하면 다른 버전의 mysql에서 이벤트 이름 지정과 약간 다른 요구 사항이 있습니다. – a1ex07

0

임시 테이블을 전혀 사용할 필요가 없습니다.

확인 링크에 필요한 모든 필드를 보낼 수도 있습니다. 약간의 해시가있는 d.

$secret = "35onoi2=-7#%g03kl"; 
$email = urlencode($_POST['email']); 
$hash = MD5($_POST['email'].$secret); 
$link = "http://example.com/register.php?email=$email&hash=$hash"; 

그게 전부입니다.
아무 것도 저장할 필요가 없으므로 어떤 이벤트도 설정해야합니다.

0

이전 게시물이지만 다른 답변이 필요하다고 생각했습니다.

임시 데이터 (파일, 데이터베이스 항목 등)를 삭제해야 할 때 일반적으로하는 일은 CRON 작업을 만드는 것입니다. 이 솔루션은 웹 호스트가 CRON 작업을 허용하고 지원할 경우에만 적합합니다. 이 경우 각 임시 레코드는 항목을 제거해야하는지 결정하는 데 사용되는 시간 소인과 함께 추가해야합니다.

CRON에 대한 자세한 내용은 참조하십시오 : CRON

관련 문제