2016-06-22 3 views
0

메일 시스템을 구축 중이며 지금까지 훌륭했습니다. 그러나 나는 "우편물 삭제"부분에 붙어있다.업데이트 쿼리 후 문이 작동하지 않는 경우

내 데이터베이스에는 true 또는 false로 응답하는 2 개의 열 (recdel 및 senddel)이 있습니다. 사용자가 "삭제"를 누를 때마다 보낸 사람이나받는 사람을 기준으로 열을 true로 업데이트하고 올바른 사람의받은 편지함에서 숨 깁니다. 받는 사람과 보낸 사람이 모두 삭제를 누르면 데이터베이스에서 제거하고 싶습니다. 양 당사자가 삭제 한 경우를 대비하여 필요하지 않습니다.

문제는 양 당사자가 삭제를 눌렀을 때 나타납니다. 당사자 중 하나가 다시 데이터베이스에서 삭제되도록 삭제를 눌러야합니다 (테스트 목적으로 은폐 부분이 제거됨).

문제는 if 문과 같고 두 번째 열이 true가 될 때까지 업데이트 쿼리 후 세 번째 if 문으로 이동하지 않으며 세 번째 if 문을 누를 때 세 번째 if 문으로 이동합니다.

나는 또한 첫 번째 if 문 2 개 안에 세 번째 if 문을 넣으려고했지만 여전히 같은 문제가 있습니다.

의견이 있으십니까?

if(person == sender) { 
    $query = 'UPDATE `email` SET `senddel`="true" WHERE `id`='.$id.''; 
} 

if(person == recipent) { 
    $query = 'UPDATE `email` SET `recdel`="true" WHERE `id`='.$id.''; 
} 

if(recdel == 'true' && senddel == 'true'){ 
    delfromdb 
} 
+0

실제 코드는 무엇입니까? 'recdel'은 쿼리의 리턴으로 정의됩니까? 해당 쿼리의 상태를 확인합니까? – chris85

+0

'사람 == 보낸 사람'? 그것들은 변수가 아닙니다. 그것들은 정의되지 않은 상수입니다. PHP는 정중하게 자동 변수화 할 것이고, 또한 정의되지 않은 변수이기 때문에'null == null'을 수행하는 것일 가능성이 큽니다. –

+0

하나의 접근법은 'recdel' 또는'senddel' 열 중 하나가 업데이트 될 때마다 삭제 동작을 시도하는 것입니다. 예를 들어,''\ '이메일 \'어디에서 \'recdel \'및 \'senddel \ '및 \'id \ '=에서 DELETE? ' – spencer7593

답변

0

데이터베이스의 열에 할당하면 PHP 변수가 자동으로 업데이트되지 않습니다. 다른 SQL 쿼리를 수행해야합니다.

$query = 'DELETE FROM email WHERE recdel = "true" and senddel = "true" AND id = $id'; 
+0

delfromdb는 id를 기반으로 db에서 항목을 삭제하는 함수이므로 이미 쿼리가 있습니다. 올바른 코딩으로 내 질문을 업데이트하겠습니다. –

+0

어떻게'$ recdel'과'$ senddel'을 설정하고 있습니까? – Barmar

+0

그리고 PHP 변수에 값을 할당해도 SQL 문 텍스트의 값과 상관없이 데이터베이스에 대해 SQL 문이 실행되지 않습니다. 이 코드는 PHP 변수를 문자열 값으로 설정하는 것입니다. – spencer7593

0

이러한 작업은 동시에 발생하지 않습니다. 따라서 진술을 실행시키지 않을 것입니다.

발신자가 전자 메일을 보낸 경우에만 시나리오가 작동한다고 생각합니다.

보낸 사람 또는받는 사람과 관계없이 recdel/senddel의 상태를 확인하는 "if"문에서 더 많은 조건이 필요합니다.

관련 문제