简体   繁体   中英

PHP - I'm getting array to string conversion error in codeigniter

im trying to have an edit/update module in my system. But, it seems i cant figure it out why im getting array to string conversion error. Below are the model,view,controller codes.

Line error in model

function updatebyid($userid, $data)
{
    $this->db->where('id', $userid); **i get the error in this line in my model**

Line error in controller

$userid = $this->model_user->get_user_by_id($this->session->userdata('id'));
    if ($this->model_user->updatebyid($userid, $data)) **AND IN THIS LINE TOO IN MY CONTROLLER**

My model

function get_user_by_id($id)
{
    $this->db->where('id', $id);
    $query = $this->db->get('users');
    return $query->result();
}
function updatebyid($userid, $data)
{
    $this->db->where('id', $userid);
    $query = $this->db->update('users', $data);
    return $query->result();
    //return $query->row()->query;
}

My view

</div>
    <div class="row well" style="color: black; margin-top: 15px;">
        <h2>Edit Profile</h2>
            <?php $attributes = array("name" => "registerform");
        echo form_open("account/edituserinfo/", $attributes);?>

        <div class="form-group">

            <div class="col-sm-4">
            <label for="fname">First Name</label>
            <input class="form-control" name="fname" required type="text" value="<?php echo $fname; ?>" />
            <span class="text-danger"><?php echo form_error('fname'); ?></span>
            </div>

            <div class="col-sm-4">
            <label for="mname">Middle Name</label>
            <input class="form-control" name="mname" required placeholder="Middle Name" type="text" value="<?php echo $mname; ?>" />
            <span class="text-danger"><?php echo form_error('mname'); ?></span>
            </div>

            <div class="col-sm-4">
            <label for="lname">Last Name</label>
            <input class="form-control" name="lname" required placeholder="Last Name" type="text" value="<?php echo $lname; ?>" />
            <span class="text-danger"><?php echo form_error('lname'); ?></span>
            </div>
        </div>
<div class="input-group" style="padding-top: 15px; margin-left: 15px">
            <button name="submit" type="submit" class="btn btn-success">Update</button>
            <!--input class="form-control" name="id" placeholder="id" type="hidden" value="<?php echo $id; ?>" /-->
        </div>

        <?php echo form_close(); ?>
        <?php echo $this->session->flashdata('msg'); ?>
    </div>
    </div>

My controller

function index()
{
    $this->load->view('include/headnav');
    $details = $this->model_user->get_user_by_id($this->session->userdata('id'));
    $data['name'] = $details[0]->fname . " " . $details[0]->lname;
    $data['level'] = $this->session->userdata('level');
    $data['fname'] = $details[0]->fname;
    $data['mname'] = $details[0]->mname;
    $data['lname'] = $details[0]->lname;
    $data['gender'] = $details[0]->gender;
    $data['email'] = $details[0]->email;
    $data['mobileNum'] = $details[0]->mobileNum;
    $data['landlineNum'] = $details[0]->landlineNum;
    $data['homeaddress'] = $details[0]->homeaddress;
    //$data['position'] = $details[0]->position;
    //$data['institution'] = $details[0]->institution;
    //$data['institutionAddr'] = $details[0]->institutionAddr;
    //$data['institutionNum'] = $details[0]->institutionNum;
    $this->load->view('view_account', $data);
    $this->load->view('include/footernav');
}
function edituserinfo()
{
    $this->load->view('include/headnav');

    $data = array(
            'lname' => $this->input->post('lname'),
            'fname' => $this->input->post('fname'),
            'mname' => $this->input->post('mname'),
            'gender' => $this->input->post('gender'),
            'homeaddress' => $this->input->post('homeaddress'),
            'mobileNum' => $this->input->post('mobileNum'),
            //'password' => $this->input->post('password'),
            //'cPassword' => $this->input->post('cPassword'),
            //'institution' => $this->input->post('institution'),
            //'institutionAddr' => $this->input->post('institutionAddr'),
            //'institutionNum' => $this->input->post('institutionNum'),
            //'position' => $this->input->post('position'),
        );

    $userid = $this->model_user->get_user_by_id($this->session->userdata('id'));
    if ($this->model_user->updatebyid($userid, $data))
        {

            $this->session->set_flashdata('msg','<div class="alert alert-success text-center">Profile edited.</div>');
            redirect('account/edituserinfo');
        }
        else
        {
            // error
            $this->session->set_flashdata('msg','<div class="alert alert-danger text-center">Error. Check credentials.</div>');
            redirect('account/edituserinfo');
        }
}

    function updateuinfoview()
{
    $this->load->view('include/headnav');
    $details = $this->model_user->get_user_by_id($this->session->userdata('id'));
    //$data['fname'] = $details[0]->fname . " " . $details[0]->lname;
    $data['fname'] = $details[0]->fname;
    $data['lname'] = $details[0]->lname;
    $data['mname'] = $details[0]->mname;
    $data['gender'] = $details[0]->gender;
    $data['email'] = $details[0]->email;
    $data['mobileNum'] = $details[0]->mobileNum;
    $data['landlineNum'] = $details[0]->landlineNum;
    $data['homeaddress'] = $details[0]->homeaddress;
    //$data['position'] = $details[0]->position;
    //$data['institution'] = $details[0]->institution;
    //$data['institutionAddr'] = $details[0]->institutionAddr;
    //$data['institutionNum'] = $details[0]->institutionNum;
    $this->load->view('view_editprofile', $data);
    $this->load->view('include/footernav');
}

This is the error message

A PHP Error was encountered Severity: Notice Message: Array to string conversion Filename: database/DB_query_builder.php Line Number: 669

Backtrace: File: C:\\xampp\\htdocs\\THTF.6\\application\\models\\model_user.php Line: 73 Function: where File: C:\\xampp\\htdocs\\THTF.6\\application\\controllers\\Account.php Line: 74 Function: updatebyid File: C:\\xampp\\htdocs\\THTF.6\\index.php Line: 315 Function: require_once

A Database Error Occurred Error Number: 1054 Unknown column 'Array' in 'where clause' UPDATE users SET lname = 'Taz', fname = 'Vinny', mname = 'Paz', gender = 'Male', homeaddress = 'USA', mobileNum = '4123' WHERE id = Array

Filename: C:/xampp/htdocs/THTF.6/system/database/DB_driver.php Line Number: 691

You are getting array to string conversion error because your model :

$this->model_user->get_user_by_id($this->session->userdata('id'))

returns an array of objects. To remedy your problem, you could loop the result or if you only need the first row of your result you could do this:

$userid = $this->model_user->get_user_by_id($this->session->userdata('id'));
if ($this->model_user->updatebyid($userid[0]->id, $data))

or perhaps you can modify your model like this:

function get_user_by_id($id)
{
    $this->db->where('id', $id);
    $query = $this->db->get('users');
    return $query->row(); // use row if you only want the first row of the result of your query
}

controller :

$userid = $this->model_user->get_user_by_id($this->session->userdata('id'));
if ($this->model_user->updatebyid($userid->id, $data))

***************************************************************************************
or a more comprehensive model so you wont need to change your controller:

function get_user_by_id($id)
{
    $this->db->where('id', $id);
    $query = $this->db->get('users');
    $result = $query->row();
    return ($result) ? $result->id : false; 
}

You are passing array of user details instead of user id in update

change this line

$userid = $this->model_user->get_user_by_id($this->session->userdata('id'));

to

$userid = $this->session->userdata('id');

in function edituserinfo() of controller

$userid = $this->model_user->get_user_by_id($this->session->userdata('id'));

In the above line you are querying the database which will return an array.

Instead set the user ID as below

$userid = $this->session->userdata('id');

Your Answer

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM