php - 用户使用 codeigniter 登录后无法将配置文件数据更新到数据库中

标签 php mysql codeigniter

一旦用户登录到该网站,它将根据配置文件 ID 获取登录用户的详细信息。如果我尝试更新无法更新的用户的详细信息,也不会出现任何问题。

Controller :

function index()
{
    if($this->session->userdata('admin_logged_in'))
    {
        $data['admin_details'] = $this->session->userdata('admin_logged_in');
        $data['country'] = $this->signup_model->getcountry();       
        $data['states'] = $this->profile_model->getstates();
        $data['records']= $this->profile_model->getprofiledata($this->session->userdata('admin_logged_in')['profile_id']);
        $data['mainpage']='profile';
        //echo '<pre>'.print_r($data, true).'</pre>';
        $this->load->view('templates/template',$data);
        $this->load->view('templates/sidebar',$data);
    }
    else
    {           
        $this->load->view('welcome');
    }
}

function updateprofile()
{
    $this->load->library('form_validation');
    $this->form_validation->set_error_delimiters('<br /><span class="error"> ','</span>');
    $this->form_validation->set_rules('first_name','First Name','required');
    $this->form_validation->set_rules('profile_name','Profile Name','required');
    $this->form_validation->set_rules('designation','Designation','required');
    $this->form_validation->set_rules('address_1','Address','required');
    $this->form_validation->set_rules('address_2','Address','required');

    if($this->form_validation->run()== FALSE)   
    {   
    $data['records']= $this->profile_model->getprofiledata($this->session->userdata('admin_logged_in')['profile_id']);      
    $data['mainpage']='profile';
    $this->load->view('templates/template',$data);
    $this->load->view('templates/sidebar',$data);
    }
    else    
        {       
            $result = $this->profile_model->update($this->input->post('profile_id'));       
            if(is_array($result))
            {       
                $data['errors']=$result;
                $data['records']= $this->profile_model->getprofiledata($this->session->userdata('admin_logged_in')['profile_id']);                 
                $data['mainpage']='profile';
                $this->load->view('templates/template',$data);
                $this->load->view('templates/sidebar',$data);
            }                              
                else                    
                $this->flash->success('<h2>Successfully Updated the record.<h2>');                      
                redirect('profile');                    
        }               

}

型号:

function getprofiledata($id)
{
    $this->db->select('profile_details.*,C.country_name,S.state_name,D.city_name');     
    $this->db->from('profile_details');
    $this->db->join('countries AS C','C.country_id=profile_details.country_id','INNER');
    $this->db->join('states AS S','S.state_id=profile_details.state_id','INNER');
    $this->db->join('cities AS D','D.city_id=profile_details.city_id','INNER');
    $this->db->where(array('profile_details.profile_id'=>$id));     
    $q=$this->db->get();        
    if($q->num_rows()>0)
      {
    return $q->result();
        }
    else
    {
    return false;
    }
}

function update($id)
{
    $data=array(
    'first_name' =>$this->input->post('first_name'),
    'profile_name' =>$this->input->post('profile_name'),
    'designation' =>$this->input->post('designation'),
    'address_1' =>$this->input->post('address_1'),
    'address_2' =>$this->input->post('address_2')       
    );
    $this->db->where(array('profile_id'=>$id));
    $this->db->update('profile_details', $data);
    return true;        
}

查看:

<div class="col-md-3">
</div>
<div class="col-md-9 col-md-offset-2">
<div id="legend">
    <legend class="">Profile Information</legend>
</div>   
<?php if(isset($records) && is_array($records) && count($records)>0): ?>
            <?php foreach($records as $r):?>
    <form action="<?php echo base_url();?>profile/updateprofile" role="form" class="form-horizontal" id="location" method="post" accept-charset="utf-8">
    <?php
        echo form_hidden('profile_id',$r->profile_id);
    ?>
    <div class="form-group">
      <label class="control-label col-sm-2 " for="name">Name:</label>
      <div class="col-sm-4 col-sm-offset-1">
        <input type="text" class="form-control" nae="first_name" id="first_name" placeholder="Enter name" value="<?php echo $r->first_name;?>" />
      </div>
    </div>
    <div class="form-group">
      <label class="control-label col-sm-2 " for="profilename">Profile Name:</label>
      <div class="col-sm-4 col-sm-offset-1">
        <input type="text" class="form-control" name="profile_name" id="profile_name" placeholder="Enter Profile name" value="<?php echo $r->profile_name;?>" />
      </div>
    </div>
    <div class="form-group">
      <label class="control-label col-sm-2 " for="designation">Designation:</label>
      <div class="col-sm-4 col-sm-offset-1">
        <input type="text" class="form-control" name="designation" id="designation" placeholder="Enter Designation" value="<?php echo $r->designation;?>" />
      </div>
    </div>
    <div class="form-group">
      <label class="control-label col-sm-2 " for="address_1">Address 1:</label>
      <div class="col-sm-4 col-sm-offset-1">
        <input type="text" class="form-control" id="address_1" name="address_1" placeholder="Enter Address Details" value="<?php echo $r->address_1;?>" />
      </div>
    </div>
    <div class="form-group">
      <label class="control-label col-sm-2 " for="address_2">Address 2:</label>
      <div class="col-sm-4 col-sm-offset-1">
        <input type="text" class="form-control" id="address_2" name="address_2"  placeholder="Enter Address Details" value="<?php echo $r->address_2;?>" />
      </div>
    </div>
     <button type="submit" class="btn">Submit</button>
    </form>
    <?php endforeach;endif;?>
    </div>

一旦用户登录到网站无法将数据更新到数据库中。一旦提交表单重定向到同一页面也没有任何问题。

最佳答案

尊敬的用户7047368,

可能是你的模型代码有问题。

function update($id)
{
    $data=array(
    'first_name' =>$this->input->post('first_name'),
    'profile_name' =>$this->input->post('profile_name'),
    'designation' =>$this->input->post('designation'),
    'address_1' =>$this->input->post('address_1'),
    'address_2' =>$this->input->post('address_2'),

    );
    $this->db->where(array('profile_id'=>$id));
    $this->db->update('profile_details', $data);
    return true;        
}

必须是(您在 $data(array) 中输入一个额外的逗号)

function update($id)
{
    $data=array(
    'first_name' =>$this->input->post('first_name'),
    'profile_name' =>$this->input->post('profile_name'),
    'designation' =>$this->input->post('designation'),
    'address_1' =>$this->input->post('address_1'),
    'address_2' =>$this->input->post('address_2')
    );
    $this->db->where(array('profile_id'=>$id));
    $this->db->update('profile_details', $data);
    return true;        
}

如果你不确定你的查询是真还是假,你可以把这行 var_dump($this->db->last_query()); 放到这个函数中 $this- 之后>db->update('profile_details', $data);;然后将其复制并粘贴到您的 phpmyadmin 中的查询表单

希望这对您有所帮助。

关于php - 用户使用 codeigniter 登录后无法将配置文件数据更新到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40492909/

相关文章:

php - 有没有办法查看准备好的查询,因为它将在数据库上执行?

php - Codeigniter 项目的数据库错误

htaccess 中的 WordPress 和 CI 重写规则

php - 搜索页面的 SELECT 语句

php - 使用 COUNT (PHP MySQL) 添加行号并显示总数

javascript - (正则表达式)\b 和 NOT\B 之间的错误差异

php - 字符串连接导致超时

php - 防止 Web 应用程序中的同时事务

使用 bcrypt mysqli 和类似安全性的 php sql 登录系统(防止 sql 注入(inject))

php - 表单验证失败后如何在 codeigniter 中重新填充下拉列表?