#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.