У меня проблема при обновлении базы данных. Когда я хочу обновить существующие данные в БД, я не смог обновить данные, если любое из значений совпадает с исходным значением, присутствующим в базе данных. Например, если «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;
}?>
Может кто-нибудь помочь мне?