Как разрешить дублирование данных при обновлении существующих данных в mongoDB с помощью ajax? - PullRequest
0 голосов
/ 04 мая 2018

У меня проблема при обновлении базы данных. Когда я хочу обновить существующие данные в БД, я не смог обновить данные, если любое из значений совпадает с исходным значением, присутствующим в базе данных. Например, если «abc» - это имя учащегося, а «123» - это отметки, если я хочу изменить только отметки на «100» и оставить имя «abc», если я нажму кнопку «Обновить», будет написано «Ошибка дублирующейся записи».
Это код для функции обновления с использованием ajax, найденный в index.php.

function update(){
        var _id = $('#edit_id').val();
        var studentname = $('#editStudentname').val();
        var marks = $('#editMarks').val();  
        $.ajax({
            url: 'update.php',
            type: 'POST',
            dataType: 'JSON',
            data: {_id:_id,studentname:studentname,marks:marks},
            success: function(data){
                $('#editModal').modal('hide');
                $('#studentname,#marks').val('');
                if(data ==0){
                    alertify.error('Error! Duplicate Entry');
                }
                else{
                    alertify.success('Updated Successfully');                       
                    $edit_row.addClass('alert alert-success');
                    $edit_row.closest("tr").find(".studentname").text(studentname);
                    $edit_row.closest("tr").find(".marks").text(marks);
                    removeActive($edit_row);
                }
            }
        });
    }

Это php-код для обновления в update.php

<?php
require_once 'config.php';

$query = array('studentname' => new MongoRegex('/^'.preg_quote($_POST['studentname']).'$/i'));  
$cursor = $collection->find($query)->count();

if($cursor == 0){
    $id = new MongoId($_POST['_id']);
    $document = $collection->findone(array('_id' => $id));

    //update
    if((isset($_POST['studentname']) && $_POST['studentname'] != null)&&(isset($_POST['marks']) && $_POST['marks'] != null)){
        $collection->update(
            array( '_id' => new MongoId($_POST['_id'])),
            array( '$set' => array( 'studentname' => $_POST['studentname'], 'marks' => $_POST['marks'] ) )
        );
    }
    echo 1;
}
else{
    echo 0;
}?>

Может кто-нибудь помочь мне?

1 Ответ

0 голосов
/ 05 мая 2018

Я нашел возможное решение. изменив следующую строку

 $query = array('studentname' => new MongoRegex('/^'.preg_quote($_POST['studentname']).'$/i'));

до указанного ниже

$query = array('studentname'); /*=> new MongoRegex('/^'.preg_quote($_POST['studentname']).'$/i'));*/

следующая функция, фактически используемая для поиска шаблона регулярного выражения. Как найдено в этом http://php.net/manual/en/class.mongoregex.php

MongoRegex('/^'.preg_quote($_POST['studentname']).'$/i'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...