gpt4 book ai didi

php - 在 codeigniter 中一次更新两个表

转载 作者:行者123 更新时间:2023-11-30 23:20:57 25 4
gpt4 key购买 nike

我有 2 个表 es_user 和 es_user_detail,user.id = user_detail.user_id 的关系。

我在 application/config/database.php 文件中定义了前缀“es_”:

$db['default']['dbprefix'] = 'es_';

现在,我编写了一次更新两个表的代码

$this->db->set('us.prefix',$this->input->post('prefix',TRUE));
$this->db->set('us.first_name',$this->input->post('first_name',TRUE));
$this->db->set('us.last_name',$this->input->post('last_name',TRUE));
$this->db->set('us.gender',$this->input->post('gender',TRUE));

$this->db->set('us.email',$this->input->post('email',TRUE));
$this->db->set('ud.home_number',$this->input->post('home_number',TRUE));
$this->db->set('ud.mobile_number',$this->input->post('mobile_number',TRUE));
$this->db->set('ud.address',$this->input->post('address',TRUE));
$this->db->set('ud.address1',$this->input->post('address1',TRUE));

$this->db->set('ud.state',$this->input->post('state',TRUE));
$this->db->set('ud.zip',$this->input->post('zip',TRUE));
$this->db->set('ud.country',$this->input->post('country',TRUE));
$this->db->set('ud.work_job_title',$this->input->post('work_job_title',TRUE));
$this->db->set('ud.work_company',$this->input->post('work_company',TRUE));
$this->db->set('ud.work_address',$this->input->post('work_address',TRUE));
$this->db->set('ud.work_city',$this->input->post('work_city',TRUE));
$this->db->set('ud.work_state',$this->input->post('work_state',TRUE));
$this->db->set('ud.work_country',$this->input->post('work_country',TRUE));
$this->db->set('ud.work_website',$this->input->post('work_website',TRUE));
$this->db->set('ud.email_update_notify',$this->input->post('email_update_notify',TRUE));



$this->db->set('ud.email_event_notify',$this->input->post('email_event_notify',TRUE));
$this->db->set('us.last_modify_date',$this->general->get_local_time('time'));
$this->db->where("user_id", $this->session->userdata(SESSION.'user_id'));
$this->db->where("us.id = ud.user_id");
$this->db->update('user as us, user_detail as ud');

我更新表格失败了。我从这里得到的错误是:

Table 'es_ems.user_detail' doesn't exist

UPDATE `es_user` as us, user_detail as ud SET `es_us`.`prefix` = 'mr', `es_us`.`first_name` = 'xyz', `es_us`.`last_name` = 'abc', `es_us`.`gender` = 'm', `es_us`.`email` = 'xyz@gmail.com', `es_ud`.`home_number` = '898939958', `es_ud`.`mobile_number` = '9841844058', `es_ud`.`address` = 'chabahil', `es_ud`.`address1` = 'ason', `es_ud`.`state` = 0, `es_ud`.`zip` = '01234', `es_ud`.`country` = 'country', `es_ud`.`work_job_title` = 'PHP Developer', `es_ud`.`work_company` = 'pqr company', `es_ud`.`work_address` = 'work address', `es_ud`.`work_city` = 'city', `es_ud`.`work_state` = 'state ', `es_ud`.`work_country` = 'country', `es_ud`.`work_website` = 'http://www.pqr.com', `es_ud`.`email_update_notify` = '1', `es_ud`.`email_event_notify` = '1', `es_us`.`last_modify_date` = '2013-03-18 13:46:22' WHERE `user_id` = '6' AND `es_us`.`id` = ud.user_id

Filename: D:\wamp\www\ems\system\database\DB_driver.php

最佳答案

如果不深入了解 CodeIgniter,我认为 Active Record 解析器会感到困惑,因为您提交了一个包含两个表名和表别名的字符串。

你有几个选择:

(1) 如果您想使用 Active Record,只需使用两次 $this->db->update() 调用,一次用于 user 一次用于 用户详细信息。您需要对 WHERE 子句进行细微更改。

(2) 将 SQL 语句手工编码为字符串,并将其传递给 $this->db->query(),这可能会增加很多工作量。

在我的应用程序中,我倾向于使用方法 (1)。

如果数据完整性至关重要,请使用 InnoDB 作为存储引擎,并使用 CodeIgniter 的事务功能,这很容易使用。

关于php - 在 codeigniter 中一次更新两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15472326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com