Это мой код на самом деле работает на моем локальном сервере, но когда я загружаю онлайн, он не работает
Моя страница просмотра
<input type = "text" class = "typeahead form-control" onkeypress = "getmedicien(0)" id = "medicine_name0" name = "medicine_name0">
function getmedicien(n){
$("#medicine_name"+n).autocomplete({
source: "<?php echo site_url('doctor_prescription/get_mediciens'); ?>",
select: function(event,ui){
event.preventDefault();
$("#medicine_name"+n).val(ui.item.value);
$("#medicine_id"+n).val(ui.item.id);
}
});
}
Этот код моего контроллера
public function get_mediciens(){
$term = $this->input->post('term');
$this->db->distinct();
$this->db->select("id,name");
$this->db->from('medicine');
$this->db->like('name', $term);
$this->db->group_by('medicine.name');
$this->db->limit(10);
$query = $this->db->get();
$mediData = array();
foreach ($query->result_array() as $row)
{
$data['id'] = $row['id'];
$data['value'] = $row['name'];
array_push($mediData, $data);
}
echo json_encode($mediData);
}
Нет полученного номера ошибки: 1055</p><p>Выражение №1 списка SELECT не находится в предложении GROUP BY и содержит неагрегированный столбец
Хорошо, проблема в вашем запросе. Скорее всего, ваша производственная база данных настроена на соблюдение строгих правил группировки. Ошибка, которую вы получаете, означает, что вы используете group by, но первое поле в вашем операторе select не используется для группировки (это одно из нескольких правил, применяемых в строгом режиме)





Если вы получаете Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column(...), это означает, что ваша производственная база данных находится в строгом режиме (что хорошо), что делает ее немного менее гибкой с точки зрения того, что она считает допустимой.
Одно из многих применяемых правил заключается в том, что при использовании group by первый элемент в вашем выражении select должен быть одним из элементов, по которым вы группируете.
попробуй поменять $this->db->group_by('medicine.name'); на $this->db->group_by('id'); и все будет ОК
@ javier Larroulet Спасибо, теперь все работает, но результат не отображается в автозаполнении.
Вы получаете какие-либо консольные ошибки в своем браузере, когда вводите форму?
получаете ли вы какие-либо консольные или сетевые ошибки при выполнении этого на рабочем сервере? (кстати, я бы не стал вызывать контроллер из
getmedicien(0)при каждом нажатии клавиши. Быстрый наборщик мог бы легко сгенерировать 10 запросов к вашему серверу менее чем за секунду, что при производственной нагрузке может быть много. Я бы подождал, пока поле имеет не менее 3-4 символов, введенных до запроса контроллера)