AJAX запрос некорректно передает данные в Mysql

Прошу помощи с составлением AJAX запроса для обработки записи в БД. Метод jQuery(this).serialize() отправляет строку в обработчик, который пишет данные в БД. Но! Если в поле и соот. в БД внести символы + или - то дальнейшее обновление становится невозможным.

Как правильно экранировать строку jQuery(this).serialize()? В самом скрипте или в обработчике ?

jQuery('#membersRoleForAdmin').submit(ajaxMemberRole);

function ajaxMemberRole(){

var memberRolesData = jQuery(this).serialize();
$.ajaxSetup({cache: false});
jQuery.ajax({
type:"POST",
url: "/wp-admin/admin-ajax.php",
headers: {
	 'Cache-Control': 'no-cache, no-store, must-revalidate', 
	 'Pragma': 'no-cache', 
	 'Expires': '0'
   },
data: memberRolesData,
success:function(data){
$("#success_form").show();
setTimeout(function(){$('#success_form').fadeOut('slow')},1000);
}
});

return false;
}

Обработчик:

        function updateMembersRole(){
		global $wpdb, $current_user, $wp_roles;
		wp_get_current_user();
		$this_month_role = $wpdb->get_results(
						"
						SELECT 
						orders.order_id AS order_id,
						users.ID AS user_id_check,
						(select meta_value from wpux_usermeta where user_id = users.ID and meta_key = 'last_name' limit 1) as last_name,
						(select meta_value from wpux_usermeta where user_id = users.ID and meta_key = 'wpux_capabilities' limit 1) as current_role,
						(select meta_value from wpux_usermeta where user_id = users.ID and meta_key = 'workout_class' limit 1) as workout_class,
						orders.director_comment
						FROM wpux_orders orders, wpux_users users
						WHERE MONTH(date) = 9 
						AND orders.user_email = users.user_email 
						AND orders.paid = '1'
						AND orders.maraphon_next_month LIKE '%марафон%'
						ORDER BY last_name
						"
						);  

						if( $this_month_role ) {
							foreach ( $this_month_role as $string_report_data ) {
								$current_user_id_for_output = $string_report_data->user_id_check;
								$current_order_id_for_output = $string_report_data->order_id;

								$dataRole1 = 'current_role_id_'.$current_user_id_for_output.'';
								$current_role = $_POST[$dataRole1];

								$dataRole2 = 'workout_class_id_'.$current_user_id_for_output.'';
								$workout_class = $_POST[$dataRole2];

								$dataRole3 = 'director_comment_id_'.$current_user_id_for_output.'';
								$director_comment = esc_attr(sanitize_text_field($_POST[$dataRole3]));

																//POST[$dataRole1]
								$wpUser = get_userdata( $current_user_id_for_output ); 
								$wpUser->set_role( $current_role );

																//POST[$dataRole2]
								if (isset($_POST[$dataRole2])){
									update_user_meta( $current_user_id_for_output, 'workout_class', $workout_class );
								};

																//POST[$dataRole3]                              
								if (!empty($_POST[$dataRole3])){
								$wpdb->insert(
									'wpux_orders',
									array( 
									'director_comment' => $director_comment
									),
									array(
									'order_id' => $current_order_id_for_output
									)
									);  
								};

							} //Тело цикла
						} //Тело первоначального условия              
		die();
		}
		add_action('wp_ajax_updateMembersRole', 'updateMembersRole');
Заметки к вопросу:
el-lable 3.5 лет назад

В вашем коде(обработчике) нет передачи данных в запрос БД из Ajax-а.

Rickie 3.5 лет назад

Ajax запрос связан с обработчиком через значение скрытого input'a

echo '<input type="hidden" name="action" value="updateMembersRole"/>';
echo '<input type="submit" id="updateuser" class="submit button" value="Записать">';

Вопрос так и не решил, подскажите, пожалуйста, как избавиться от символов + и - в строке?