簡體   English   中英

codeigniter 3.0.1 中的數組到字符串轉換錯誤

[英]array to string conversion error in codeigniter 3.0.1

更新數據庫中的記錄時出現以下錯誤消息

嚴重性:注意

消息:數組到字符串的轉換

文件名:數據庫/DB_query_builder.php

行號:662

回溯:

文件:C:\\xampp\\htdocs\\Site\\application\\models\\class_model.php 行:48 功能:其中

文件:C:\\xampp\\htdocs\\Site\\application\\controllers\\class_con.php 行:107 功能:更新

文件:C:\\xampp\\htdocs\\Site\\index.php 行:292 功能:require_once

這是我的控制器

function edit($id)
{
    $rules = [
        [
            'field' => 'classname',
            'label' => 'Class Name',
            'rules' => 'trim|required'
        ],
        [
            'field' => 'inchargename',
            'label' => 'Incharge Name',
            'rules' => 'trim|required'
        ],
        [
            'field' => 'classstrength',
            'label' => 'Class Strength',
            'rules' => 'trim|required'
        ]
    ];
    $this->form_validation->set_rules($rules);
    $class = $this->class_model->find($id)->row();


    if($this->form_validation->run() == FALSE)
    {
        $this->load->view('admin/class/classEdit',array('class'=>$class));
    }
    else
    {

        $data['classname']      = set_value('classname');
        $data['inchargename']   = set_value('inchargename');
        $data['classstregth']   = set_value('classstregth');

        $this->class_model->update($id,$data);
        $this->session->set_flashdata('message','Class has been Updated Successfully');
        redirect('class_con/index');

    }
}

這是我的模型

public function find($id) {

    $this->db->where('id',$id);
    $row = $this->db->get('class');
    return $row;
}

function update($data, $id)
{
    try{
        $this->db->where('id',$id);
        $this->db->update('class', $data);
        return true;
    }
    catch(Execption $e){
        echo $e->getMessage();
    }

}

這是我的觀點

<?php echo form_open_multipart('class_con/edit/'.$class->id); ?>
                        <div class="form-group" id="register-login-group">
                            <label for="classname">Class Name</label>
                            <div class="input-group">
                                <input type="text" class="form-control" id="classname" name="classname" value="<?php echo $class->classname; ?>" placeholder="Class Name">
                                <div class="input-group-addon"><i class="fa fa-pencil"></i></div>
                            </div>
                        </div>
                        <div class="form-group" id="register-login-group">
                            <label for="classname">Incharge Name</label>
                            <div class="input-group">
                                <input type="text" class="form-control" id="inchargename" name="inchargename" value="<?php echo $class->inchargename; ?>" placeholder="Incharge Name">
                                <div class="input-group-addon"><i class="fa fa-pencil"></i></div>
                            </div>
                        </div>
                        <div class="form-group" id="register-login-group">
                            <label for="classname">Class Strength</label>
                            <div class="input-group">
                                <input type="text" class="form-control" id="classstrength" name="classstrength" value="<?php echo $class->classstrength; ?>" placeholder="Class Stregth">
                                <div class="input-group-addon"><i class="fa fa-pencil"></i></div>
                            </div>
                        </div>

                                <button type="submit" class="btn btn-primary">Save</button>
                                <?=anchor('class_con/index','Cancel',['class'=>'btn btn-warning'])?>
                    <?php echo form_close(); ?>

在您的控制器中,您可以通過以下行調用模型中的更新方法:

$this->class_model->update($id,$data);

但在您的模型中,您已將函數定義為:

function update($data, $id)
{
    try{
        $this->db->where('id',$id);
        $this->db->update('class', $data);
        return true;
    }
    catch(Execption $e){
        echo $e->getMessage();
    }

}

問題在於您傳遞的參數順序:

將其更改為:

$this->class_model->update($data,$id);

只需從中刪除->row()

 $class = $this->class_model->find($id)->row();

而是使用

$class = $this->class_model->find($id);
foreach ($class->result() as $row)
{
    echo $row->colunn_name;
}

set_value()

允許您設置輸入表單或文本區域的值。 您必須通過函數的第一個參數提供字段名稱。

所以與其

    $data['classname']      = set_value('classname');
    $data['inchargename']   = set_value('inchargename');
    $data['classstregth']   = set_value('classstregth');

用於在 $data 數組中存儲值

  $data['classname']      = 'classname';
  $data['inchargename']   = 'inchargename';
  $data['classstregth']   = 'classstregth';

您的查詢中似乎存在錯誤。

請使用以下步驟跟蹤錯誤。

1) 使用$this->db->last_query(); 打印您的查詢....

2) 在 sql 中運行該查詢,它是否提供適當的行。

3) 如果查詢工作正常,現在print_r o/p 變量並跟蹤天氣是否給出結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM