更新语句破坏数据库

时间:2013-05-15 03:32:42

标签: php mysql codeigniter codeigniter-2

我想弄清楚这里有什么问题,但我真的不确定。我有一个用户的网站,当用户编辑详细信息时,它似乎覆盖所有其他记录与这些细节。这种情况不会总是发生,但有时候(结果当然是混乱!)。这是更新代码

public function update_edit()
    {
            /* echo " //// INSIDE UPDATE EDIT "; */

             $this->form_validation->set_rules('fullname', 'الاسم الكامل', 'isset|required|min_length[6]|max_length[100]');

                //check that there are no form validation errors
                if($this->form_validation->run() == FALSE)
                {   
                    /* echo " //// INSIDE FORM VALIDATION"; */
                    if(($this->session->userdata('username')!=""))
                    {
                                            /* echo " //// INSIDE SESSION VALIDATION"; */
                        $data = array();
                        $data = $this->profileModel->load_user_editable_data($this->session->userdata('username'));
                        $this->load->view('layout/header');
                        $this->load->view('profile_edit', $data);
                        $this->load->view('layout/footer');
                        //$this->load->view('thankyou');
                    }else{
                        //$this->load->view('login');
                        $this->login();
                    }
                }else{
                    $complete = $this->profileModel->update_profile($this->session->userdata('username')); 
                    if($complete == 1)
                    {       
                        $this->load->view('layout/header');
                        $this->load->view('update_complete');
                        $this->load->view('layout/footer');
                    }
                }

    }

这是型号代码:

public function update_profile($username)
    {
        $config['upload_path']   = './uploads/';
        $config['allowed_types'] = 'gif|jpg|png|jpeg';
        $this->load->library('upload', $config);
        $fullImagePath;
        if (isset($_FILES['profilepic']) && !empty($_FILES['profilepic']['name']))
        {
          if ($this->upload->do_upload('profilepic'))
          {
            $upload_data    = $this->upload->data();
            $fullImagePath = '/uploads/' . $upload_data['file_name']; 
           }
        }else{
            $fullImagePath = $this->session->userdata('profilepic');
        }
            $data = array(
                   'fullname' => $this->input->post('fullname'),
                   'email' => $this->input->post('email'),
                   'mobile' => $this->input->post('mobile'),
                   'telephone' => $this->input->post('telephone'),
                   'about' => $this->input->post('about'),
                   'address' => $this->input->post('address'),
                   'profilepic' => $fullImagePath,
                );

            $this->db->where('username', $username);
            $this->db->update('free_user_members', $data); 

        return 1;
    }

这是表格:

<div class="content_container">


    <div id="rt-main" class="mb8-sa4">
      <div class="rt-container">
      <div class="rt-grid-12">

        <div dir="rtl" class="homecontent">



            <?php echo validation_errors(); ?>
            <?php echo form_open_multipart('profile/update_edit'); ?>

            <? $this->session->set_userdata('profilepic', $profilepic); ?>

            <h5>الاسم الكامل</h5>
            <? $data = array(
                          'name'        => 'fullname',
                          'id'          => 'round_input',
                          'value'       => $fullname,
                        );

            echo form_input($data); ?>


            <h5>الايميل</h5>

            <? $data = array(
                          'name'        => 'email',
                          'id'          => 'round_input',
                          'value'       => $email,
                          'size' => '70'
                        );

            echo form_input($data); ?>

            <h5>الجوال</h5>
            <? $data = array(
                          'name'        => 'mobile',
                          'id'          => 'round_input',
                          'value'       => $mobile,
                        );

            echo form_input($data); ?>

            <h5>هاتف</h5>
            <? $data = array(
                          'name'        => 'telephone',
                          'id'          => 'round_input',
                          'value'       => $telephone,
                        );

            echo form_input($data); ?>

            <h5>العنوان</h5>
            <? $data = array(
                          'name'        => 'address',
                          'id'          => 'round_input',
                          'value'       => $address,
                          'size' => '70'
                        );

            echo form_input($data); ?>

            <h5>نبذة عني</h5>
            <? $data = array(
                          'name'        => 'about',
                          'id'          => 'round_input',
                          'value'       => $about,
                          'rows' => '3',
                          'cols' => '40',
                        );

            echo form_textarea($data); ?>

            <h5>الصورة الشخصية</h5>
            <img width="300" height="300" src="<? echo $profilepic; ?>" />

            <h5>إختيار صورة جديدة</h5>
            <? 
            $data = array(
                          'name'        => 'profilepic',
                          'id'          => 'profilepic',
                        );

            echo form_upload($data);
             ?>

            <div><input type="submit" value="احفظ التغييرات" /></div>

            </form>
 </div>
          <p>&nbsp; </p>
        </div>
      </div>
        <div class="clear"></div>
      </div>
    </div>
如果有人告诉我我在做什么可能会导致混乱,那么

会非常感激。

此致

1 个答案:

答案 0 :(得分:2)

您必须添加代码以检查会话中的用户名是否存在。

如果会话超时,codeigniter将返回FALSE

username = false上查询MySQL将返回所有行。