2014-10-03 5 views
0

PHP에서 mongodb를 사용하고 mongodb 컬렉션에 $ subitems 배열을 삽입하는 데 문제가 있습니다.mongodb in mongo db collection

PHP 코드 :

if($_SERVER["REQUEST_METHOD"] == "POST"){ 
    $errors = array(); 
    $alarm = array(); 

    $item_name = data::test_input($_POST["item_name"]); 
    $folder_name = data::test_input($_POST["folder_name"]); 
    $subitem_num = data::test_input($_POST["subitem_num"]); 


    for($i=1;$i<=$subitem_num;$i++){ 
     ${"subitem_name$i"} = data::test_input($_POST["subitem_name".$i]); 
     ${"subitem_file$i"} = data::test_input($_POST["subitem_file".$i]); 
     if(count($errors)==0){ 
     $subitems = array(${"subitem_name$i"}=>${"subitem_file$i"}); 
     } 
    } 

    if(empty($item_name)){ 
     $errors['item_name']= "insert item"; 
    } 
    if(empty($folder_name)){ 
     $errors['folder_name']= "insert folder"; 
    } 
    if(count($errors)==0){ 
    $query = array(
     "item_name" => $item_name, 
     "status" => 0, 
     "folder_name" => $folder_name, 
     "subitem" => $subitems 
    ); 
    $result = items::insert($query); 
    if($result) $alarm['success_additem'] = "submit done"; 
    } 
} 

난 레코드 값은 다음과 같이 수집을 MongoDB를 할 : 삽입 수집을 MongoDB를하는

{ "_id" : ObjectId("542e71b333e916542a00002e"), "item_name" : "users management", "status" :0, "folder_name" : "users", "subitem" : { "a" : "a.php","b" : "b.php" },"c" : "c.php" } 

방법의 PHP 코드를 작성?

답변

0

문서에있는 subitem 필드에 데이터베이스에 삽입 할 때 두 개 이상의 키/값 쌍이 포함되지 않는다고 가정합니다. 그 for 루프를 바탕으로

for($i=1;$i<=$subitem_num;$i++){ 
    ${"subitem_name$i"} = data::test_input($_POST["subitem_name".$i]); 
    ${"subitem_file$i"} = data::test_input($_POST["subitem_file".$i]); 
    if(count($errors)==0){ 
    $subitems = array(${"subitem_name$i"}=>${"subitem_file$i"}); 
    } 
} 

, 당신은 이상 쓰기 $subitems 각 반복에있어. 이 할당됩니다으로 기록에 대한

$subitems = array(); 

for($i = 1; $i <= $subitem_num; $i++) { 
    $key = data::test_input($_POST["subitem_name".$i]); 
    $value = data::test_input($_POST["subitem_file".$i]); 

    if (count($errors) == 0) { 
     $subitems[$key] = $value; 
    } 
} 

, 내가, 당신이 여기 $errors을 확인하고 왜 아무 생각이 : 난 당신이 더 나은 다음과 같이 제공 될 것입니다 경우에 내 키를 할당하는 것을 의미 가정 한 번이 함수의 상단에 있으며 for 루프 내에서 수정 된 것으로 나타나지 않습니다; 그러나, 나는 당신이 제공 한 원래 예제와 일치하도록 그것을 제자리에 두었습니다.

또한 동적으로 명명 된 변수를 사용할 이유가 없습니다. $key$value과 같은 고정 용어를 사용하면 코드를 훨씬 쉽게 읽을 수 있습니다.

+0

나는 이것을 시험해 보았다. 정말 고마워. –