2016-11-08 3 views
0

Я новичок в mongodb. Я хочу удалить конкретный документ из коллекции, но он не может быть удален, пока нет синтаксической ошибки.Удалить конкретный документ в Mongodb с помощью PHP

Вот show_post.php

<?php 
    $connect = new Mongoclient(); 
    $db = $connect -> post; 

<table width="50%" border="1"> 
    <tr> 


    <th>#</th> 
    <th>Title</th> 
    <th>description</th> 
    <th colspan="2">Action</th> 
    </tr> 
    <?php $result = $db->blogs->find();?> 
    <?php foreach ($result as $row) : ?> 
     <tr> 
     <td><?php echo $row["_id"]; ?></td> 
     <td><?php echo $row["title"]; ?></td> 
     <td><?php echo $row["description"]; ?></td> 

     <td><a href="delete_post.php?id=<?php echo $row['_id'] ?>">Delete</a></td> 
     <td> <a href="edit_post.php?id=<?php echo $row['_id'] ?>">Update</a></td> 

     </tr> 
     <?php endforeach?> 

</table> 

и здесь delete_post.php

 

     $id=$_GET['id']; 
     $var = array("_id"=>$id); 

     $del =$db->blogs->remove($var); 
      if(!$del){ 

      echo "not deleted"; 
      }else { 
      header("location:show_post.php"); 
      exit(); 
      } 
      ?> 



+0

попробовать запрашивая свой идентификатор и посмотреть, что ID вы передаете в функцию удаления. Помните, что если вы пытаетесь удалить объект, который не существует, mongoDB не вызывает никаких исключений. –

ответ

0

Это, вероятно, потому, что вы передаете строковое представление _id к find() способа:

<td><a href="delete_post.php?id=<?php echo $row['_id'] ?>">Delete</a></td> 

Поскольку MongoDB PHP version> = 1.0.0, find() должен вернуть объект MongoDB\BSON\ObjectID. Если вы используете echo, эта переменная возвращает строковое представление.

Что вы могли бы сделать это, чтобы преобразовать его обратно в качестве объекта по:

$var = array("_id"=>new MongoDB\BSON\ObjectID($id)); 
Смежные вопросы