У меня проблема с формой обновления. Это форма «Сведения о клиенте», в которой поля предварительно заполнены данными из БД.
По сути, форма обновляется только при изменении текстового поля, т. Е. Отправленное текстовое поле отличается от предыдущего. Если вы этого не сделаете, например, ничего не меняйте или просто установите флажок, форма отправляет переменные в модель, но модель, похоже, не выполняет sql.
После тестирования я знаю, что форма отправляет данные, и я знаю, что модель получает их. Просто кажется, что он вообще не выполняет запрос. disabled_rows () равно нулю и не возвращает ошибок.
Как будто CI проверяет перекрестные проверки полей перед выполнением SQL.
Но если вы измените текстовое поле, все будет работать без проблем.
Мой код массивный, поэтому я опубликую резюме:
Контроллер
if ($this->form_validation->run() == FALSE)
{
//load views etc
}
else
{
$title = $this->input->post('title');
$forename = $this->input->post('forename');
//etc...
$this->load->model('Clients_model');
$update_sql = $this->Clients_model->update_client(
$title,
$forename,
$surname,
$dob,
$email,
$address1,
$address2,
$town,
$county_state_id,
$address_code,
$country_id,
$alt_address1,
$alt_address2,
$alt_town,
$alt_county_state_id,
$alt_address_code,
$alt_country_id,
$use_alt_address,
$phone_land,
$phone_mobile,
$client_type,
$cancer_profile,
$communication_method,
$involvement,
$status,
$client_id
);
$this->session->set_flashdata('msg', $update_sql);
redirect('/clients', 'refresh');
}
Модель
function update_client($title,
$forename,
$surname,
$dob,
$email,
$address1,
$address2,
$town,
$county_state_id,
$address_code,
$country_id,
$alt_address1,
$alt_address2,
$alt_town,
$alt_county_state_id,
$alt_address_code,
$alt_country_id,
$use_alt_address,
$phone_land,
$phone_mobile,
$client_type,
$cancer_profile,
$communication_method,
$involvement,
$status,
$client_id
)
{
$this->sql = 'UPDATE client
SET
title = ?,
forename = ?,
surname = ?,
dob = ?,
email = ?,
address1 = ?,
address2 = ?,
town = ?,
county_state_id = ?,
address_code = ?,
country_id = ?,
alt_address1 = ?,
alt_address2 = ?,
alt_town = ?,
alt_county_state_id = ?,
alt_address_code = ?,
alt_country_id = ?,
use_alt_address = ?,
phone_land = ?,
phone_mobile = ?,
status = ?
WHERE
client_id = ?
';
$this->query = $this->db->query($this->sql, array(
$title,
$forename,
$surname,
$dob,
$email,
$address1,
$address2,
$town,
$county_state_id,
$address_code,
$country_id,
$alt_address1,
$alt_address2,
$alt_town,
$alt_county_state_id,
$alt_address_code,
$alt_country_id,
$use_alt_address,
$phone_land,
$phone_mobile,
$status,
$client_id
));
if ( $this->db->affected_rows() == 1)
{
//etc
}
}
Большое спасибо!
Джо