Использование CodeIgniter для проверки уникальности значения поля

#php #arrays #database #codeigniter #unique

#php #массивы #База данных #codeigniter #уникальный

Вопрос:

Я пытаюсь проверить, является ли добавляемое в базу данных значение unique.

Это код, который я использую, но in_array() он никогда не возвращается true , даже если я знаю, что номер уже есть в базе данных. Я неправильно result_array() понимаю или something?

 //Check if Serial is Already in Database 
$this->db->select('fldUserSensorID');
$sensorqry = $this->db->get("tblMonitoringSensors");
$result = $sensorqry->result_array();

if (in_array($this->input->post('serialNumber'), $result)) {
    $attempt=false;
}
  

Ответ №1:

Вы используете result_array() which должны иметь такие данные Array :-

 Array(
  0=>Array("fldUserSensorID"=>1),
  1=>Array("fldUserSensorID"=>3),
  2=>Array("fldUserSensorID"=>9)
)
  

итак, вы должны попробовать это:

 $optimized_result=array_column($result, 'fldUserSensorID');
if (in_array($this->input->post('serialNumber'), $optimized_result)) {
                $attempt=false;
}
  

Ответ №2:

Насколько я понимаю, вы пытаетесь проверить значение на соответствие значениям вашей базы данных и посмотреть, есть ли уже значение, которое вы пытаетесь вставить, или нет.

Для этого вам не нужна какая-либо новая функция или даже запрос к базе данных самостоятельно.

Вы должны использовать проверку формы, чтобы позаботиться об этом. Для этой цели существует правило проверки.

Вот как это сделать:

 $this->load->library('form_validation');

$this->form_validation->set_rules('fldUserSensorID', 'fldUserSensorID', 'required|is_unique[tblMonitoringSensors.fldUserSensorID]');

if (!$this->form_validation->run()) {
    // Error here
} else {
   // Success
}
  

В этих правилах я говорю, что fldUserSensorID должен быть обязательным и должен быть уникальным в таблице tblMonitoringSensors.