2014-04-21 4 views
10

기본적으로 데이터베이스의 범주 목록을 채우는 코드를 코딩 한 다음 삭제할 항목을 선택할 수 있습니다.Isset expression error

나는 인해 오류로 작동하지 않는 삭제 코드에 문제가 있습니다

Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in F:\xamppnew\htdocs\650032\admin\delete.php on line 6 

라인의 원인이 있습니다 :

if(isset($_POST['delete_id'] && !empty($_POST['delete_id']))) { 

deletecategory.php을

<h3> 
    Delete Category 
    </h3> 

    <?php $result = mysql_query("SELECT * FROM category"); ?> 

<table> 
    <?php while($row = mysql_fetch_array($result)) : ?> 
    <tr id="<?php echo $row['category_id']; ?>"> 
    <td><?php echo $row['category_Name']; ?></td> 
    <td> 
     <button class="del_btn" rel="<?php echo $row['id']; ?>">Delete</button> 
    </td> 
    </tr> 
    <?php endwhile; ?> 
</table> 

<script> 
    $(document).ready(function(){ 
    $('.del_btn').click(function(){ 
     var del_id = $(this).attr('rel'); 
     $.post('delete.php', {delete_id:del_id}, function(data) { 
      if(data == 'true') { 
      $('#'+del_id).remove(); 
      } else { 
      alert('Could not delete!'); 
      } 
     }); 
    }); 
    }); 
</script> 

delete.php

(210)
<?php 
    if(isset($_POST['delete_id'] && !empty($_POST['delete_id']))) { 
     $delete_id = mysql_real_escape_string($_POST['delete_id']); 
     $result = mysql_query("DELETE FROM category WHERE `id`=".$delete_id); 
     if($result !== false) { 
     echo 'true'; 
     } 
    } 
    ?> 
+0

당신의 코드가 SQL 인젝션에 취약 수 있어야한다는 것입니다. [mysql_real_escape_string'은 값이 MySQL 문자열 리터럴에서 사용되는 경우에만 작동합니다.] (http : //security.stackexchange.com/a/35718/539) – Gumbo

+0

'isset()'과' ! empty()'를 동시에 사용하십시오. 입력이 정의되어 있지 않으면'empty'도 작동합니다 : https://stackoverflow.com/questions/4559925/why-check-both-isset-and-empty – Adam

답변

30

)을 놓친 :

if(isset($_POST['delete_id']) && !empty($_POST['delete_id'])) 
          ^--- 
3

문제는이

if(isset($_POST['delete_id'] && !empty($_POST['delete_id']))) 

기타는 표현에 누락 된 )의 문제를 보여

if(isset($_POST['delete_id']) && !empty($_POST['delete_id'])) 
5

해야한다는 것입니다 하지만 empty()은을 확인합니다.그래서 중복됩니다. 그냥 empty()을 확인하십시오

if(!empty($_POST['delete_id'])) { 
0

문제는이

if(isset($_POST['delete_id'] && !empty($_POST['delete_id']))) 

if((isset($_POST['delete_id'])) && (!empty($_POST['delete_id'])))