codeigniter, передающий переменную другой функции в том же контроллере, получил предупреждение о недопустимой строке, даже если переменная передана правильно

#php #codeigniter

#php #codeigniter

Вопрос:

Я попытался передать переменную $passdataqty с массивом внутри от public function inputstokkeluarSedia() ко public function public function check_inputqty($passdataqty) всей этой функции, расположенной в 1 контроллере

с помощью этого кода :

 public function inputstokkeluarSedia()
{
 ...
 $passdataqty = array(
   'id_sedia' => $this->input->post('id_sedia'),
   'stock_keluar' => $this->input->post('qtyinput'),
   'jenis_dok' => $this->input->post('jenisdok'),            
  );
$this->check_inputqty($passdataqty);
...
}

public function check_inputqty($passdataqty)
{
 ...
 $id_sedia = $passdataqty['id_sedia'];
 $jenis_dok = $passdataqty['jenis_dok'];
 $stock_keluar = $passdataqty['stock_keluar'];
 $this->db->select('stock_rincian');

 $this->db->from('persediaan_stock_rincian');
 $this->db->where('id_sedia', $id_sedia);
 $this->db->where('jenis_dok', $jenis_dok);
 $query = $this->db->get()->row()->stock_rincian;
    
 if ($stock_keluar > $query) {
      $this->form_validation->set_message('check_inputqty', 'Kuantitas barang yang ingin 
      dikeluarkan melebihi jumlah stok yg ada!');
      return FALSE;
 } else {
      return TRUE;
 }
}
  

код работает хорошо, но я получаю это предупреждение.

Сообщение: недопустимое смещение строки ‘id_sedia’

Сообщение: недопустимое смещение строки ‘jenis_dok’

Сообщение: недопустимое смещение строки ‘stock_keluar’

Сообщение: попытка получить свойство ‘stock_rincian’ не-объекта

вопрос в том, как решить это предупреждение, даже если код работает? может кто-нибудь объяснить, почему появляется это предупреждение?

Комментарии:

1. Куда в вашем коде вы вызываете ->check_inputqty($passdataqty) ? Что вы извлекаете $passdataqty из inputstokkeluarSedia() метода? (эти строки не показаны в вашем коде)

2. вы получили значение в $id_sedia ?

3. @verjas извините, я забыл ввести переменную, теперь она обновляется в function inputstokkeluarsedia() , @DevsiOdedra да, я получаю значение, когда я попытался с помощью var_dump значение равно : string(2) "13"

Ответ №1:

Проблема в $this->db->get()->row()->stock_rincian
Вместо этого используйте:

 if($this->db->get()->num_rows()>0){
    return True;
}else{
    return False;
}
  

Комментарии:

1. $query в моем операторе if является динамическим, не всегда 0, поэтому мне нужна эта переменная, переданная из public function inputstokkeluarSedia()

2. проблема в этой строке ‘$this-> db-> get()-> row()-> stock_rincia’ вы не можете использовать stock_rincia после row()-> вы должны получить результат row_array () в переменной, а затем сравнить, используя условие if

3. хорошо, теперь я получаю результат после добавления row_array, спасибо.