【问题标题】:Updating email address by adding '@live.com' to the end通过在末尾添加“@live.com”来更新电子邮件地址
【发布时间】:2014-03-09 13:43:27
【问题描述】:

我正在尝试通过在末尾添加“@live.com”来更新电子邮件列表表,因为有些用户忘记为他们的电子邮件地址添加这个后缀。例如,他们输入了“imsuperman”之类的内容,而应该是“imsuperman@live.com”。

我正在使用 codeigniter,但遇到以下代码:

        $this->db->select('email, username');
        $user=$this->db->get('user');

        foreach ($user->result() as $row):

        $to_username=$row->username;

        //load email address
        $to_email_raw=$row->email;

        if(strpos($to_email_raw, '@') !==false)
        {
            $to_email=$to_email_raw;
        }
        else
        {
            $to_email=$to_email_raw.'@live.com';
        }

        endforeach;

到目前为止,我已经更改了每一行的电子邮件地址。关于下一步我应该如何更新表格的任何建议?

谢谢,

【问题讨论】:

  • 我没用过CI,但是有$this->db->update函数吗?我相信你可以只用谷歌搜索“CodeIgniter 更新表”。
  • 一个建议。当他们使用javascript输入@live.com时,你为什么不添加它。你不需要每次都更新你的表格
  • 但是这两种方式的缺点是您假设用户的电子邮件地址为@live.com
  • 是的,我也这样做了,但现在我需要更新已经有类似记录的表。他们也都使用“live.com”后缀,因为这是预定义的。
  • @Polynomial CI“更新”功能可能会起作用,但我只找到了使用数组更新表的方法,我目前没有。

标签: php mysql codeigniter email


【解决方案1】:

如果这是您数据库中的现有数据,您应该从相关行中查询 id 并将其传递到您的更新函数中。

如果您尝试更新数据库中的单行,请使用更新功能

link

在你的控制器中:

$data = array('id' => $id, 'email' => $to_email);

在你的模型中

function update_email() {     
    $this->db->where('id', $id);
    $this->db->update('mytable', $data);
}

如果您尝试同时更新数据库中的多行,请使用更新批处理功能

在您的控制器中,在 foreach 循环中:

$data[] = array('id' => $id, 'email' => $to_email);

在你的模型中

function update_email_batch() {
    $this->db->update_batch('mytable', $data, 'id'); 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多