2010-08-22 2 views
1

사용자가 게시 할 범주를 선택할 수있는 PHP 함수가 있습니다. 선택하지 않은 데이터베이스에서 사용자가 선택한 범주를 삭제할 수 있기를 원합니다. 확인란을 선택합니다. 하지만 내가 시도한 모든 것은 모든 사용자 범주를 삭제하거나 전혀 작동하지 않는 것처럼 보였습니다. 누군가이 문제를 도와 줄 수 있습니까?PHP 및 MySQL 함수는 데이터베이스 문제에서 선택되지 않은 범주를 삭제합니다.

다음은 선택 취소 된 카테고리를 삭제해야하는 PHP 기능의 일부입니다.

for ($x = 0; $x < count($query_cat_id); $x++){ 
    if($query_cat_id[$x] == $cat['id']){ 
     echo 'checked="checked"'; 
    } else if(!isset($query_cat_id[$x])) { 
     $mysqli = mysqli_connect("localhost", "root", "", "sitename"); 
     $delete_id = mysqli_query($mysqli,"DELETE FROM posts_categories WHERE post_id = '" . $post_id . "'"); 
     if (!$delete_id) { 
      print mysqli_error($mysqli); 
     } 
    } 
} 
+0

어쩌면'$ post_id'가 어딘가에서 SQL injection에 대해 소독되기를 희망합니다. –

+0

예쁘지 만 내 질문이 아닙니다. – maximus

+0

내 생각 엔'! isset ($ query_cat_id [$ x])'가 생각하는 값을 반환하지 않습니다. 삭제 관련 항목을 주석으로 처리하고 화면에 출력하여 값을 검토하십시오. –

답변

1

이 쿼리는 where 절과 함께하기 때문에 게시물에서 모든 카테고리를 삭제합니다. 당신은 본질적으로 게시물 ID = $ post_id를 가진 posts_categories 테이블에서 모든 레코드를 제거합니다. 좀 더 구체적으로 만들려면 where 절에 추가해야합니다.

$delete_id = mysqli_query($mysqli,"DELETE FROM posts_categories WHERE post_id = '" . $post_id . "' AND categoryID = '". $query_cat_id[$x] ."'"); 

이제는 동일한 작업을했지만 추가 한정자가 추가되었습니다. post_id가 $ post_id이고 카테고리 ID가 (선택하지 않은 확인란의 값) 인 행만 테이블에서 삭제하십시오.

면책 조항 : 함수 ($ query_cat_id [$ x])에 카테고리 ID를 저장하는 위치를 추측하고 있습니다.

관련 문제