【问题标题】:PHP - I'm getting array to string conversion error in codeigniterPHP - 我在codeigniter中得到数组到字符串的转换错误
【发布时间】:2017-03-12 16:53:47
【问题描述】:

我试图在我的系统中安装一个编辑/更新模块。但是,似乎我无法弄清楚为什么我会得到数组到字符串的转换错误。下面是模型、视图、控制器代码。

模型中的线错误

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

控制器线路错误

$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**

我的模型

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;
}

我的看法

</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>

我的控制器

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');
}

这是错误信息

遇到 PHP 错误 严重性:通知 消息:数组到字符串的转换 文件名:数据库/DB_query_builder.php 行号:669

回溯: 文件:C:\xampp\htdocs\THTF.6\application\models\model_user.php 线路:73 功能:哪里 文件:C:\xampp\htdocs\THTF.6\application\controllers\Account.php 线路:74 功能:updatebyid 文件:C:\xampp\htdocs\THTF.6\index.php 线路:315 函数:require_once

发生数据库错误 错误号:1054 'where 子句'中的未知列'Array' 更新users SET lname = 'Taz',fname = 'Vinny',mname = 'Paz',gender = '男性',homeaddress = '美国',mobileNum = ' 4123' 在哪里 id = Array

文件名:C:/xampp/htdocs/THTF.6/system/database/DB_driver.php 行号:691

【问题讨论】:

  • 您正在以字符串的形式访问数组。实际的错误是什么?
  • 请向我们展示完整的错误消息,并附上行号,然后在您的代码中指出导致问题的行
  • 当我尝试更新用户数据时,我的 where 子句中出现未知列“数组”
  • 我的错,我刚刚编辑了我的帖子。
  • 我想你会发现数据库错误更重要的修复!!!!!!!!!

标签: php arrays string codeigniter


【解决方案1】:

您收到数组到字符串转换错误,因为您的模型:

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

返回一个对象数组。为了解决您的问题,您可以循环结果 或者如果您只需要结果的第一行,您可以这样做:

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

或者您可以像这样修改您的模型

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
}

控制器

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

**************************************************** ************************************************
或更全面的模型,因此您无需更改控制器:

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

【讨论】:

    【解决方案2】:

    您在更新中传递的是用户详细信息数组而不是用户 ID

    改变这一行

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

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

    在控制器的function edituserinfo()

    【讨论】:

    • 感谢您的回答。但是,它没有用。我收到此错误严重性:错误消息:在布尔文件名上调用成员函数 result():models/model_user.php 行号:75
    • return $query->result();在模型的函数updatebyid的这一行中
    • updatebyid 函数中移除 return $query-&gt;result();。更新方法不会返回结果
    【解决方案3】:
    $userid = $this->model_user->get_user_by_id($this->session->userdata('id'));
    

    在上述行中,您正在查询将返回数组的数据库。

    改为如下设置用户 ID

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

    你的答案

    【讨论】:

    • 感谢您的回答。但它仍然没有工作我得到这个错误严重性:错误消息:调用布尔文件名上的成员函数结果():models/model_user.php行号:75
    • return $query->result();在模型的函数updatebyid的这一行中
    • $userid = $this->session->userdata('id'); $this->model_user->updatebyid($userid, $data);在您的控制器中只需编写此代码
    猜你喜欢
    • 1970-01-01
    • 2012-12-02
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 2015-12-18
    • 1970-01-01
    相关资源
    最近更新 更多