2014-09-22 85 views
-1

我已經實施CRUD操作使用PHP + MongoDB。以下代碼用於使用GridFS上傳任何文件。MongoDB更新GridFS記錄

$conn = new MongoClient(); 
      $db = $conn->selectDB('mydb'); 
      $gridfs = $db->getGridFS('uploads'); 

      foreach ($_FILES as $file) { 

       if(in_array($file['type'], $acceptedTypes)){  

       $id = $gridfs->storeFile($file['tmp_name'], array('filename' => $file['name'], 'type' => $file['type'], "id"=> 13, "parentId" => "10", "title" => $file['name'], "isFolder" => 0)); 


       }else{ 

        echo 'file is not of correct type'; 
       } 
      } 
    $conn->close();` 

我可以上傳使用上面的代碼中的任何文件,但是當我嘗試更新的任何文件的title它只是不工作。更新文件名的代碼如下。

$files = $db->fs->uploads; 
$primId = $_GET['id_value']; 
$renameTitle = $_GET['name']; 
$updateData = array("title" => $renameTitle, "updatedDate" => date('Y-m-d')); 

$files->update(array("id" => $primId), array('$set' => $updateData)); 
$conn->close(); 

這將更新其ID傳遞的任何文件的title。如果我需要更新任何記錄,但是它不適用於任何GridFS文件上載,則該代碼可用。

更準確地說如果我通過ID像下面,

$file = $gridfs->findOne(array('id' => 13)); **//WORKS** 

$file = $gridfs->findOne(array('id' => $_GET['id'])); **//DO NOT WORKS** 

有以更新GridFS記錄,可使用任何其它方法?

謝謝。

回答

0

終於搞明白了。

MongoDB需要integer變量來創建正確的查詢。

如果您直接使用$_GET$_POST值,則應先將其轉換爲整數值。在我的項目中,它的工作原理是這樣的:

$id = (int)$_GET["id"]; 
$file = $gridfs->findOne(array('id' => $id)); **//WORKS LIKE CHARM** 

希望它有助於某人。